Medium
Write an efficient algorithm that searches for a value target
in an m x n
integer matrix matrix
. This matrix has the following properties:
Example 1:
Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
Output: true
Example 2:
Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
Output: false
Constraints:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 100
-104 <= matrix[i][j], target <= 104
impl Solution {
pub fn search_matrix(matrix: Vec<Vec<i32>>, target: i32) -> bool {
let end_row = matrix.len();
let end_col = matrix[0].len();
let mut target_row = 0;
let mut result = false;
// Find the row where the target could be present
for i in 0..end_row {
if matrix[i][end_col - 1] >= target {
target_row = i;
break;
}
}
// Search for the target in the identified row
for i in 0..end_col {
if matrix[target_row][i] == target {
result = true;
break;
}
}
result
}
}