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

二维数组中的查找

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

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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