240 搜索二维矩阵

题目

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

每行的元素从左到右升序排列。

每列的元素从上到下升序排列。

示例 1:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5

输出:true

示例 2:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20

输出:false

思路

观察发现矩阵的右上角的一行,从左到右是递增的,从上到下是递增,于是可以根据右上角的值跟target对比来移动row或者col来找target的值。

代码

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        // 看矩阵右上角的元素即可,如果右上角的元素大了,就缩小col,反正缩小row
        int row=0,col=matrix[0].size()-1;
        while(row<matrix.size()&& col>=0){
            if(matrix[row][col]==target){
                return true;
            }
            else if(matrix[row][col]<target){
                row++;
            }
            else{
                col--;
            }
        }
        return false;
    }
};

感谢 感谢华南溜达虎 力扣hot 100

相关推荐
Mr_pyx7 小时前
LeetCode HOT 100 —— 矩阵置零(多种解法详解)
算法·leetcode·矩阵
YuanDaima20487 小时前
矩阵基础原理与题目说明
人工智能·笔记·python·学习·线性代数·矩阵
我真不是小鱼8 小时前
cpp刷题打卡记录29——矩阵置零 & 旋转图像 & 除了自身以外数组的乘积
数据结构·c++·算法·leetcode·矩阵
脱氧核糖核酸__10 小时前
LeetCode热题100——240.搜索二维矩阵 II(题目+题解+答案)
c++·算法·leetcode·矩阵
代码改善世界1 天前
【MATLAB初阶】矩阵操作(一)
开发语言·matlab·矩阵
西西弗Sisyphus1 天前
PyTorch 里的矩阵乘法
pytorch·矩阵·matmul·torch.mm·bmm
脱氧核糖核酸__1 天前
LeetCode热题100——73.矩阵置零(题目+题解+答案)
c++·算法·leetcode·矩阵
脱氧核糖核酸__1 天前
LeetCode热题100——54.螺旋矩阵(题解+答案+要点)
c++·算法·leetcode·矩阵
xiaotao1311 天前
01-编程基础与数学基石:线性代数
人工智能·python·线性代数
小辉同志2 天前
74. 搜索二维矩阵
c++·leetcode·矩阵·二分查找