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

 

不用两个循环做, 着手于条件(从左下角开始,若相等往右上跳一个,若小于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;
    }