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

二维数组中的查找

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

二分法

二分的灵活运用,二分的话,就是经过每次二分,可以确定下次该在哪一部分查找,从而舍去一部分查找区间,节省时间。本题考虑到二维数组是有序的,我们要选择一个位置,当和target比较好后,可以确定下一个位置。这里可以选择右上角或左下角的位置,以右上角为例,设右上角元素array[i][j]值为val,若val = target,返回true;若val > tar,因为val所在列的元素都比val大,所以j--;若val < tar,因为val所在行的元素都比val小,所以i++,左下角同理。

C++代码:

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        if (array.empty() || array[0].empty()) {return false;}
        int i = 0, j = array[0].size() - 1;
        while (i <= array.size() - 1 && j >= 0) {
            if (array[i][j] == target) {
                return true;
            } else if (array[i][j] > target) {
                j--;
            } else {
                i++;
            }
        }
        return false;
    }
};
全部评论

相关推荐

萧索X:写篮球联赛干嘛,陪老板打篮球吗。还有实习经历要写自己所在岗位具体完成什么工作,自己的任务具体完成了什么需求,给公司带来了哪些量化增长
点赞 评论 收藏
分享
2025-12-10 19:36
湖北工业大学 Web前端
饿魔:看到在线简历了吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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