排好序的二维数组, 从上到下从左到右增大, 给出一个数找出此数组里有多少个这个数。
不用两个循环做, 着手于条件(从左下角开始,若相等往右上跳一个,若小于target往右边跳一个,若大于target往上面跳一个, 若从右上角开始同理 ):
public int searchMatrix(int[][] matrix, int target) { if(matrix == null){ return 0; } int i =matrix.length -1; int j = 0; int acc = 0; while(i >= 0 && j < matrix[i].length){ if(matrix[i][j] == target){ i--; j++; acc++; }else if(matrix[i][j] < target){ j++; }else{ i--; } } return acc; }
浙公网安备 33010602011771号