LeetCode-in-All

240. Search a 2D Matrix II

Medium

Write an efficient algorithm that searches for a target value in an m x n integer matrix. The matrix has the following properties:

Example 1:

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:

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:

Solution

class Solution {
    /**
     * @param Integer[][] $matrix
     * @param Integer $target
     * @return Boolean
     */
    public function searchMatrix($matrix, $target) {
        $r = 0;
        $c = count($matrix[0]) - 1;
        while ($r < count($matrix) && $c >= 0) {
            if ($matrix[$r][$c] == $target) {
                return true;
            } elseif ($matrix[$r][$c] > $target) {
                $c--;
            } else {
                $r++;
            }
        }
        return false;
    }
}