leetcode-搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵:

每行中的整数从左到右按非严格递增顺序排列。

每行的第一个整数大于前一行的最后一个整数。

给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

示例 1:

输入:matrix = \[1,3,5,7,10,11,16,20,23,30,34,60], target = 3

输出:true

示例 2:

输入:matrix = \[1,3,5,7,10,11,16,20,23,30,34,60], target = 13

输出:false

提示:

m == matrix.length

n == matrixi.length

1 <= m, n <= 100

-104 <= matrixij, target <= 104

思路 :虽然是二维数组,但是可以看成一维数组的形式。left=0,right=m*n-1。求出mid后,找到mid对应的坐标。然后就和一维数组上的二分一样了。
代码:

c 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int m = matrix.length;
        int n = matrix[0].length;

        int left = 0;
        int right = m*n-1;

        while(left<=right){
            int mid = (left+right)/2;
            int r = mid/n;
            int c = mid-r*n;
            if(matrix[r][c] == target){
                return true;
            }
            if(matrix[r][c] > target){
                right = mid-1;
            }else{
                left = mid+1;
            }
        }
        return false;
    }
}
相关推荐
垆边人似月.5 小时前
华为机试题 :两数之和
c++·算法·华为
默默开发5 小时前
物流行业可用算法方向
算法
垆边人似月.5 小时前
华为机试题 :有效的括号
c++·算法·华为
A加ITIL教练长河achotsao5 小时前
ITIL Master 战略领导者课后系列分享:AI编程正在重新划分研发与运维的边界
算法
hahaha60165 小时前
FPGA+ARM实现AWB的全流程
人工智能·嵌入式硬件·算法·计算机视觉·fpga开发
李洱5 小时前
LangChain 和 LangGraph 的区别:核心原理与使用场景
算法
夏幻灵5 小时前
每日一题:LeetCode 206:反转链表——三指针与原地反转详解
算法·leetcode·链表
岁月蹉跎的一杯酒6 小时前
CCM-可调颜色校正与噪声权衡
图像处理·算法·isp
在所不辞兄6 小时前
选择隐式方法求解刚性ODE
算法
码爸7 小时前
贪心算法介绍与示例
算法·贪心算法