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

二维数组中的查找

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

很有意思的一道题,想了差不多15分钟,由于数组每一列,每一行都是递增的,我们从左到右枚举,令i为每一列的最后一个可能为target的下标,列举每一列的过程可以缩小i的范围。

样例解释:

[1,2,8,9],

[2,4,9,12],

[4,7,10,13],

[6,8,11,15]

target=3

我们令i等于3,列举第0列发现2是小于3的,i值变为1,由于4是大于3的,所以第2行和第3行剩余的数都是大于3的,

列举第1列,2<3,i变为0,列举第2列,8>3往后没有小于3的了,退出循环,返回false。

public:
    bool Find(int target, vector<vector<int> > array) {
        int n=array.size();
        int m=array[0].size();
        int i=n-1,j=0;
        for(;j<m;j++)
        {
            if(array[0][j]<=target)
            {
                for(;i>=0;i--)
                {
                    if(array[i][j]==target) return true;
                    if(array[i][j]<target) break;
                }
            }
            else break;
        }
        return false;
    }
};
全部评论
同学同花顺尝试一下吗,面试简单不造火箭,可保姆式全程跟进度,我帖子有内推
点赞 回复 分享
发布于 2022-09-23 00:56 浙江

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务