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 == matrix[i].length

1 <= m, n <= 100

-104 <= matrix[i][j], 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;
    }
}
相关推荐
Mr_Xuhhh10 小时前
深入理解二叉树:从数据结构到算法实战
数据结构·算法
xuhaoyu_cpp_java10 小时前
Boyer-Moore 投票算法
java·经验分享·笔记·学习·算法
kobesdu11 小时前
FAST-LIO2 + 蓝海M300激光雷达:从建图到实时栅格图的完整流程
算法·机器人·ros·slam·fast lio
x_xbx11 小时前
LeetCode:438. 找到字符串中所有字母异位词
算法·leetcode·职场和发展
MThinker11 小时前
K230+canMV+micropython实现低成本MLX90640红外热成像测温模块(续)
算法·智能硬件·micropython·canmv·k230
小菜鸡桃蛋狗11 小时前
C++——string(下)
算法
学习永无止境@11 小时前
灰度图像中值滤波算法实现
图像处理·算法·计算机视觉
ysa05103011 小时前
斐波那契上斐波那契【矩阵快速幂】
数据结构·c++·笔记·算法
CHANG_THE_WORLD11 小时前
模拟解析:宽度数组 `[1,2,1]`,10个条目的 XRef 流
java·前端·算法
lixinnnn.11 小时前
多源BFS:矩阵距离
算法·宽度优先