[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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值