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

二维数组中的查找

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

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        //判断是否有元素存在
        if (array.size() == 0 || array[0].size() == 0) {
            return false;
        }
        //确定二元数组的宽和高:width和height
        int height = array.size();
        int width = array[0].size();
        //逐层搜索,直至找到target
        for (int i = 0; i < height; i++) {
            int left = 0, right = width - 1, mid = (left + height) / 2;
            //二分查找
            while (left <= right) {
                if (target == array[i][mid]) {
                    return true;
                }
                else {
                    if (target > array[i][mid]) {
                        left = mid + 1;
                        mid = (left + right) / 2;
                    }
                    else {
                        right = mid - 1;
                        mid = (left + right) / 2;
                    }
                }
            }
        }
        return  false;
    }
};

全部评论

相关推荐

面了100年面试不知...:今年白菜这么多,冬天可以狂吃了
点赞 评论 收藏
分享
想进开水团喝开水:哦 给我一个 就算你真拿到牛友也会为你开心的
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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