leetcode-74:搜索二维矩阵

简介: leetcode-74:搜索二维矩阵

题目

题目连接

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

  • 每行中的整数从左到右按升序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

示例 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

解题

方法一:二分查找 (二维转化为一维)

可以将二维展开成一维,然后就可以使用二分查找了

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m=matrix.size(),n=matrix[0].size();
        int l=0,r=m*n-1;
        while(l<=r){
            int mid=(l+r)>>1;
            int row=mid/n;
            int col=mid-row*n;
            if(matrix[row][col]==target){
                return true;
            }else if(matrix[row][col]>target){
                r=mid-1;
            }else{
                l=mid+1;
            }
        }
        return false;
    }
};

方法二:

从右上角出发,可以看成二叉搜索树

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m=matrix.size(),n=matrix[0].size();
        int row=0,col=n-1;
        while(row<m&&col>=0){
            if(matrix[row][col]<target){
                row++;
            }else if(matrix[row][col]>target){
                col--;
            }else{
                return true;
            }
        }
        return false;
    }
};
相关文章
|
2月前
|
算法
力扣240 搜索二维矩阵II
力扣240 搜索二维矩阵II
|
5月前
|
存储 机器学习/深度学习 算法
【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵
【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵
37 0
|
4月前
|
算法
【Leetcode 74】搜索二维矩阵 —— 二分查找|矩阵
给你一个满足下述两条属性的`m x n`整数矩阵:每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数
|
4月前
|
算法 测试技术 C#
【二分查找】【z型搜索】LeetCode240:搜索二维矩阵
【二分查找】【z型搜索】LeetCode240:搜索二维矩阵
|
4月前
|
算法
leetcode-240:搜索二维矩阵 II
leetcode-240:搜索二维矩阵 II
19 0
|
4月前
|
算法 Java C++
二维矩阵搜索问题——小米面试题
二维矩阵搜索问题——小米面试题
25 0
|
4月前
|
JavaScript SoC
leetcode-304:二维区域和检索 - 矩阵不可变
leetcode-304:二维区域和检索 - 矩阵不可变
29 0
|
11月前
|
算法 Java Python
leetcode.74:搜索二维矩阵
leetcode.74:搜索二维矩阵
54 0
|
12月前
|
算法
图解LeetCode——240. 搜索二维矩阵 II
图解LeetCode——240. 搜索二维矩阵 II
6000 0
|
机器学习/深度学习 算法 测试技术
LeetCode:搜索二维矩阵题解
请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征: 每一行的数字都从左到右排序 每一行的第一个数字都比上一行最后一个数字大
106 0