题意:给定一个二维数组,行列都拍好序,找出target是否存在
思路:从数组的右上角开始查找
- 右上角的数比target大,那么向下移动一行
- 右上角的数比target小,那么向左移动一列
- 越界就break,返回false
思想:遍历数组
复杂度:时间O(n),空间O(1)
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length;
if(m == 0)
return false;
int n = matrix[0].length;
int rm = 0;
int rn = n - 1;
while(rm < m && rn >= 0) {
if(target < matrix[rm][rn]) {
rn--;
} else if(target == matrix[rm][rn]){
return true;
} else {
rm++;
}
}
return false;
}
}