题解 | #二维数组中的查找#

二维数组中的查找

http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

由于矩阵的递增递减特性决定了高效的查找的起点和剪枝是解题关键。

要选择那种是所在行/列的最大的,同时是所在列/行最小的点开始查找,这样的点,当查找的目标值比它小时,能够排除一整列/行,当目标值比它大时,同样能排除一行/列,从而提升查找的效率。

public class Solution {
    public boolean Find(int k, int [][] a) {
        if (a == null || a.length == 0 || a[0].length == 0)  // 非法的矩阵: null, {}, {{}, {}, {}}等
            return false;
        int m = a.length, n = a[0].length, i = 0, j = n - 1; // m行n列,从右上角开始
        while (i <= m - 1 && j >= 0) {
            if (a[i][j] == k) return true;
            else if (a[i][j] < k) i++;
            else j--;
        }
        return false;
    }
}
全部评论

相关推荐

09-19 13:59
门头沟学院 Java
用微笑面对困难:Trae一下,如果真成了,他用了直接发字节起诉代码版权,,这个代码不商用是没问题的如果没成也是情理之中的。
点赞 评论 收藏
分享
09-04 00:41
中山大学 C++
鼠鼠能上岸吗:进行中是秋招大项目进行中,你还可以选别的岗位;已结束是这个岗位流程结束了;筛选中就是在简历筛选环节没hr捞
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务