LintCode Search a 2D Matrix II

时间:2020-12-21 11:49:36

排好序的二维数组, 从上到下从左到右增大, 给出一个数找出此数组里有多少个这个数。

不用两个循环做, 着手于条件(从左下角开始,若相等往右上跳一个,若小于target往右边跳一个,若大于target往上面跳一个, 若从右上角开始同理 ):

public int searchMatrix(int[][] matrix, int target) {
if(matrix == null){
return ;
}
int i =matrix.length -; int j = ; int acc = ;
while(i >= && j < matrix[i].length){
if(matrix[i][j] == target){
i--;
j++;
acc++;
}else if(matrix[i][j] < target){
j++;
}else{
i--;
}
}
return acc;
}