forked from aylei/leetcode-rust
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathp0240_search_a_2d_matrix_ii.rs
69 lines (62 loc) · 2.05 KB
/
p0240_search_a_2d_matrix_ii.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
* [240] Search a 2D Matrix II
*
* Write an efficient algorithm that searches for a target value in an m x n integer matrix. The matrix has the following properties:
*
* Integers in each row are sorted in ascending from left to right.
* Integers in each column are sorted in ascending from top to bottom.
*
*
* Example 1:
* <img alt="" src="https://assets.leetcode.com/uploads/2020/11/24/searchgrid2.jpg" style="width: 300px; height: 300px;" />
* Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
* Output: true
*
* Example 2:
* <img alt="" src="https://assets.leetcode.com/uploads/2020/11/24/searchgrid.jpg" style="width: 300px; height: 300px;" />
* Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
* Output: false
*
*
* Constraints:
*
* m == matrix.length
* n == matrix[i].length
* 1 <= n, m <= 300
* -10^9 <= matix[i][j] <= 10^9
* All the integers in each row are sorted in ascending order.
* All the integers in each column are sorted in ascending order.
* -10^9 <= target <= 10^9
*
*/
pub struct Solution {}
// problem: https://leetcode.com/problems/search-a-2d-matrix-ii/
// discuss: https://leetcode.com/problems/search-a-2d-matrix-ii/discuss/?currentPage=1&orderBy=most_votes&query=
// submission codes start here
impl Solution {
pub fn search_matrix(matrix: Vec<Vec<i32>>, target: i32) -> bool {
let mut i : i32 = 0;
let mut j : i32 = matrix[0].len() as i32 - 1;
let row_count : i32 = matrix.len() as i32;
while i < row_count && j >= 0 {
let num : i32 = matrix[i as usize][j as usize];
if num == target {
return true;
} else if num > target {
j-=1;
} else {
i+=1;
}
}
false
}
}
// submission codes end
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_240() {
assert!(!Solution::search_matrix(vec![vec![-5]], -10));
}
}