矩阵的二分查找!【手绘漫画】图解LeetCode之搜索二维矩阵(LeetCode 74)

在这里插入图片描述

图解LeetCode刷题计划

1、写在前面

手绘漫画系列正式上线!!!“图解LeetCode刷题计划” 来了!!!

今天是第十五期,争取每天一期,最多两天一期,欢迎大家监督我。。。
在这里插入图片描述

这一期是一个矩阵数组的二分查找!!!

在这里插入图片描述
在这里插入图片描述

2、题目

首先看一下题目,

在这里插入图片描述
这里要先确定一个问题,每行的第一个整数大于前一行的最后一个整数!!!所以不要想得那么简单,但是也不难!
在这里插入图片描述

3、正文

一起来看:

首先这个题比较难的应该就是数组和矩阵的转换问题了~公式比较固定,索引求商列数就是横坐标,索引求余列数就是纵坐标。
在这里插入图片描述
转换成数组之后,就进行正常的二分查找就好了,模板之前讲过了,套用就完了。
在这里插入图片描述

4、代码

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        if(matrix.empty()||matrix[0].empty()) return false;

        int m=matrix[0].size(),n=matrix.size();
        int left=0;
        int right=m*n-1;
        while(left<right){
            int mid=left+right>>1;
            if(matrix[mid/m][mid%m]>=target){
                right=mid;
            }
            else{
                left=mid+1;
            }
        }
        if(matrix[left/m][left%m]==target) return true;
        return false;
    }
};

在这里插入图片描述
在这里插入图片描述

如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。

如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~

展开阅读全文
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值