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

二维数组中的查找

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

二维数组的查找
既然给出了两个条件:
由左到右递增 / 由上到下递增。总不能那么暴力遍历完两次就解决战斗吧。所以,还是得好好想想怎么利用好这两个条件。
思路代码如下:

/*
思路:从左下角开始找,设左下角值为m,因为左下角是一行中的最小值/一列中的最大值。
    target>m,就要往右边找,因为上边的数更小了;
    target<m,就要往上边找,因为右边的数更大了;
    target=m,找到了目标值。
    直至找到了上/右边界,还是没有找到,那就是没有啦。
*/
public class Solution {
    public boolean Find(int target, int [][] array) {
        int rowLength = array[0].length;
        int colLength = array.length;
        if(rowLength==0 || colLength==0){
            return false;
        }
        //左下角坐标
        int row=(colLength-1),col=0;
        //往右上找
        while(row>=0&&col<rowLength){
            if(target == array[row][col]){
                return true;
            }else if(target > array[row][col]){
                col++;
            }else{
                row--;
            }
        }
        return false;
    }
}

时间复杂度: O(m+n)

全部评论

相关推荐

02-22 20:28
重庆大学 Java
程序员牛肉:首先不要焦虑,你肯定是有希望的。 首先我觉得你得好好想一想自己想要什么。找不到开发岗就一定是失败的吗?那开发岗的35岁危机怎么说?因此无论是找工作还是考公我觉得你都需要慎重的想一想。但你一定要避开这样一个误区:“我是因为找不到工作所以不得不选择考公”。 千万不要这么想。你这个学历挺好的了,因此你投后端岗肯定是有面试机会的。有多少人简历写的再牛逼,直接连机筛简历都过不去有啥用?因此你先保持自信一点。 以你现在的水平的话,其实如果想要找到暑期实习就两个月:一个月做项目+深挖,并且不断的背八股。只要自己辛苦一点,五月份之前肯定是可以找到暑期实习的,你有点太过于高看大家之间的技术差距了。不要焦虑不要焦虑。 除此之外说回你这个简历内容的话,基本可以全丢了。如果想做后端,先踏踏实实做两个项目再说+背八股再说。如果想考公,那就直接备战考公。 但是但是就像我前面说的:你考公的理由可以是因为想追求稳定,想追求轻松。但唯独不能是因为觉得自己找不到工作。不能这么小瞧自己和自己的学历。
点赞 评论 收藏
分享
02-16 13:52
门头沟学院 Java
给🐭🐭个面试机会吧:嘿,mvbatis
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务