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

二维数组中的查找

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;
    }
}
全部评论

相关推荐

LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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