[LintCode] 38. Search a 2D Matrix_II

public class Solution {
    /**
     * O(m + n) 时间复杂度
     */
     public int searchMatrix(int[][] matrix, int target) {
        if(matrix == null || matrix.length == 0) return 0;
        if(matrix[0] == null || matrix[0].length == 0) return 0;
        int m = matrix.length;
        int n = matrix[0].length;
        //每次观察右上角的点
        int cur_i = 0;
        int cur_j = n - 1;
        int sum = 0;
        while(cur_i<m && cur_j >= 0){
            if(matrix[cur_i][cur_j] == target){
                sum ++; 
                cur_j --; //该列不可能再有满足条件的了
            }else if(matrix[cur_i][cur_j] > target){
                cur_j --; //该列不可能再有满足条件的了
            }else{  
                cur_i ++;//该点比目标点小,说明该行不可能有满足条件的了
            }
        }
        return sum;
    }
}

猜你喜欢

转载自blog.csdn.net/js54100804/article/details/80178511
今日推荐