LeetCode-in-Rust

74. Search a 2D Matrix

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:

Solution

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
    }
}