首页 > 其他分享 >【二分查找】LeetCode 74. 搜索二维矩阵思路

【二分查找】LeetCode 74. 搜索二维矩阵思路

时间:2023-05-13 10:22:50浏览次数:55  
标签:二分 matrix int 矩阵 length 二维 74 一维 LeetCode

题目链接

74. 搜索二维矩阵思路

思路

因为矩阵中每行都按升序排列,且每行的第一个整数大于前一行的最后一个整数。所以整个矩阵其实就是一个大的升序的一维数组,可以使用二分查找的方法对“一维数组”进行搜索,只不过在获取元素的过程中需要进行一步一维索引到二维索引的映射。

代码

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int m = matrix.length, n = matrix[0].length;
        // 把二维数组映射到一维
        int left = 0, right = m * n - 1;

        while(left <= right) {
            int mid = (right - left) / 2 + left;
            if(get(matrix, mid) == target)
                return true;
            else if (get(matrix, mid) < target)
                left = mid + 1;
            else if (get(matrix, mid) > target)
                right = mid - 1;
        }

        return false;
    }

    // 通过一维坐标访问二维数组中的元素
    int get(int[][] matrix, int index) {
        int m = matrix.length, n = matrix[0].length;
        int i = index / n, j = index % n;

        return matrix[i][j];
    }
}

标签:二分,matrix,int,矩阵,length,二维,74,一维,LeetCode
From: https://www.cnblogs.com/shixuanliu/p/17396854.html

相关文章

  • 【二分查找】LeetCode 162. 寻找峰值思路
    题目链接162.寻找峰值思路思路一个不严谨但是好理解的思路是:如果\(nums[mid]>nums[mid+1]\),那么\(nums[mid+1]\)肯定不是峰值,此时让\(right=mid\),从左边继续找峰值。反之则\(nums[mid]\)肯定不为峰值,让\(left=mid+1\)。代码classSolution{public......
  • 【数组01】二分查找&移除元素
    TableofContents二分查找704.二分查找35.搜索插入位置34.在排序数组中查找元素的第一个和最后一个位置69.x的平方根367.有效完全平方数移除元素27.移除元素26.删除排序数组中的重复项283.移动零844.比较含退格的字符串977.有序数组的平方Solutions7......
  • 【二分查找】LeetCode 278. 第一个错误的版本
    题目链接278.第一个错误的版本思路二分查找代码publicclassSolutionextendsVersionControl{publicintfirstBadVersion(intn){intleft=1,right=n-1;while(left<=right){intmid=left+(right-left)/2;......
  • #yyds干货盘点# LeetCode程序员面试金典:对称二叉树
    1.简述:给你一个二叉树的根节点root,检查它是否轴对称。 示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false2.代码实现:classSolution{publicbooleanisSymmetric(TreeNoderoot){returncheck(root,root);}......
  • 1. LeetCode 35. 力扣第一题
    按照代码随想录的顺序,今天刷了LeetCode35.搜索插入位置,也是刷的力扣第一题classSolution{public:intsearchInsert(vector<int>&nums,inttarget){intleft=0;intright=nums.size()-1;while(left<=right){intm......
  • SAP GUI登录器中快捷方式记住密码的方式(仅适用于740和750版本)
    出于安全考虑,SAPGUI730及后续版本中不在允许用户在SAPLOGON中的快捷方式中记住密码,在GUI740和GUI750中,通过以下方法可以将记住密码功能释放出来: ①在注册表路径HKEY_CURRENT_USER\Software\SAP\SAPShortcut下添加“Security”子项同时按住windows徽标键+R,弹出运行......
  • leetcode 1251 平均售價
    leetcode1251平均售價selectr.product_id,round(sum(r.price*r.units)/sum(r.units),2)asaverage_pricefrom(selectp.product_id,p.price,u.unitsfromPricespleftjoinUnitsSolduonp.product_id=u.product_idwhereu.purchase_......
  • leetcode 1280 學生們參加各科測試的次數
    leetcode1280學生們參加各科測試的次數 selects.student_id,s.student_name,st.subject_name,if(e.result,e.result,0)asattended_examsfromStudentssjoinSubjectsstleftjoin(selectstudent_id,subject_name,count(*)asresultfromExaminatio......
  • 1174. 即时食物配送 II
    【题目】配送表:Delivery+-----------------------------+---------+|ColumnName                |Type   |+-----------------------------+---------+|delivery_id                |int    ||customer_id         ......
  • 2023五一杯B题问题四----基于二分最大流最优解
    4.1问题四的分析:本题要求建立一个最小成本的运输策略,考虑最大网络流问题(MaximumFlowProblem),对于一个带权有向图G(V,E),其中V为图中所有点的集合,E为所有边的集合,且每一条边都有它的流量上限.这个带权有向图中有两个特殊的点:源(source)节点s和汇(sink)节点t,且这两个点......