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

二维数组中的查找

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

因为二维数组中数的分布是同一列上由上而下数从小到大排列,同一行上由左到右数从小到大排列,从左下角位置开始查找,如果当前数小于target说明target可能在当前数的右方或者右上方位置(肯定不在当前列了,因为当前数是这列最大的数了),所以向右移动一位,如果当前数大于target,说明target可能在当前数的上方或者上右方位置(肯定不在当前行,因为当前数是这行中最小的数),所以向上移动一位。时间复杂度为O(m+n)

public class Solution {
    public boolean Find(int target, int [][] array) {
        // 从左下角开始找,如果target大于左下角的数,则往右移动
        // 如果小于的话则往上移动
        if(array.length < 1 || array[0].length < 1)
            return false;
        int x = array.length-1;
        int y = 0;
        
        while(x >= 0 && y<array[0].length){
            int temp = array[x][y];
            if(temp == target)
                return true;
            else if(temp < target) // 当前数小于target 向右移动
                y++;
            else  // 当前数大于target向上移动
                x--;
        }
        return false;
    }
}
全部评论

相关推荐

醒工硬件:1学校那里把xxxxx学院去了,加了学院看着就不像本校 2简历实习和项目稍微精简一下。字太多,面试官看着累 3第一个实习格式和第二个实习不一样。建议换行 4项目描述太详细了,你快把原理图贴上来了。比如可以这样描述:使用yyyy芯片,使用xx拓扑,使用pwm控制频率与占空比,进行了了mos/电感/变压器选型,实现了xx功能 建议把技术栈和你做的较为有亮点的工作归纳出来 5熟悉正反激这个是真的吗
点赞 评论 收藏
分享
牛客765689665号:没有实习是硬伤,央国企看学历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务