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

二维数组中的查找

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 14:32
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
简历当中有水分算不算造假...
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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