在 m x n 矩陣中搜索目標值。矩陣特性:每行從左遞增,每列從上遞增。判斷目標值是否存在。
從右上角 (0, n-1) 開始:
matrix[i][j] == target,返回 true。matrix[i][j] > target,說明當前列所有元素均大於目標(列遞增),左移 j--。matrix[i][j] < target,說明當前行所有元素均小於目標(行遞增),下移 i++。false。O(m + n),每步排除一行或一列。O(1)。public class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if (matrix.length == 0 || matrix[0].length == 0) return false;
int i = 0, j = matrix[0].length - 1;
while (i < matrix.length && j >= 0) {
int x = matrix[i][j];
if (target == x) return true;
else if (target < x) --j;
else ++i;
}
return false;
}
}