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

二维数组中的查找

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;
    }
};

全部评论

相关推荐

码农索隆:想看offer细节
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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