题目:
给定一个二维矩阵,已知每行和每列都是增序的,尝试设计一个快速搜索一个数字是否在矩
阵中存在的算法。
简单的技巧:
我们可以从右上角开始查找,若当前值大于待搜索值,我们向左
移动一位;若当前值小于待搜索值,我们向下移动一位。如果最终移动到左下角时仍不等于待搜
索值,则说明待搜索值不存在于矩阵中。
注意补充:
这里是对“方法四”的“如何选出发点”的补充:
-
选左上角,往右走和往下走都增大,不能选
-
选右下角,往上走和往左走都减小,不能选
-
选左下角,往右走增大,往上走减小,可选
-
选右上角,往下走增大,往左走减小,可选
-
class Solution { public boolean searchMatrix(int[][] matrix, int target) { int row = matrix.length-1; int col = 0; while (row >= 0 && col < matrix[0].length){ if (matrix[row][col] > target){ row--; }else if (matrix[row][col] < target){ col ++; }else { return true; } } return false; } }