首页 > 其他分享 >搜索二维矩阵 II(LeetCode)

搜索二维矩阵 II(LeetCode)

时间:2024-08-26 20:57:33浏览次数:12  
标签:return target 矩阵 col II matrix LeetCode row

题目

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

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

解题

"""
时间复杂度为 O(m + n),其中 m 是矩阵的行数,n 是矩阵的列数。
"""


def searchMatrix(matrix, target) -> bool:
    if not matrix or not matrix[0]:
        return False

    # 从右上角开始搜索
    row, col = 0, len(matrix[0]) - 1

    while row < len(matrix) and col >= 0:
        if matrix[row][col] == target:
            return True
        elif matrix[row][col] > target:
            col -= 1  # 如果当前值大于目标值,向左移动
        else:
            row += 1  # 如果当前值小于目标值,向下移动

    return False


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
print(searchMatrix(matrix, target))

标签:return,target,矩阵,col,II,matrix,LeetCode,row
From: https://blog.csdn.net/weixin_74254879/article/details/141572776

相关文章

  • 每日一题:Leetcode-47 全排列
    力扣题目解题思路java代码力扣题目:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例1:输入:nums=[1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例2:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]解......
  • 【Leetcode 2032 】 至少在两个数组中出现的值 —— 哈希表与按位运算符(最全的注解)
    给你三个整数数组 nums1、nums2 和 nums3 ,请你构造并返回一个 元素各不相同的 数组,且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。示例1:输入:nums1=[1,1,3,2],nums2=[2,3],nums3=[3]输出:[3,2]解释:至少在两个数组中出......
  • 【从头写CAD】 转换矩阵类系列一,总说明及泛型类
    /*矩阵类编程思路总说明:平面CAD对象主要包括点(point)、线(line含线段、直线、射线,宽线、多段线)、平面形状(shap含矩形、圆形、椭圆、文字、图块实体、外部参照实体及各种标注等)。我们先用点(point)来说明矩阵功能。点(P),可以用向量(1,x,y)表示。一、如果点发生平移......
  • 代码训练营 Day8 | 344.反转字符串 | 541.反转字符串II |
    344.反转字符串使用双指针一个指针指向数组开始的位置,一个指针指向数组结束的位置通过循环让两个指针元素相互交换知道两个指针碰到一起classSolution(object):defreverseString(self,s):""":types:List[str]:rtype:NoneDonotretur......
  • LeetCode刷题笔记8.19-8.24
    LeetCode刷题笔记8.19-8.2476.最小覆盖子串(8.19)算法常见技巧——滑动窗口滑动窗口即维护一个窗口(特定数据结构),来替代暴力遍历子结构这种“笨办法”窗口所涉及到的元素由left和right两个指针选定,选定范围从(left,right]开始,随着right指针向后遍历,寻找符合题意的某个可行解......
  • LeetCode 690. 员工的重要性(哈希表、深度优先搜索dfs)
    题目:690.员工的重要性思路:先用哈希表map将每个员工的信息映射到员工ID对应的下标位置。接着使用深度优先搜索dfs,来记录总和即可。细节看注释/*//DefinitionforEmployee.classEmployee{public:intid;intimportance;vector<int>subordinates;......
  • Java | Leetcode Java题解之第374题猜数字大小
    题目:题解:publicclassSolutionextendsGuessGame{publicintguessNumber(intn){intleft=1,right=n;while(left<right){//循环直至区间左右端点相同intmid=left+(right-left)/2;//防止计算时溢出......
  • 数据结构:189(轮转数组)leetcode(OJ)
    给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例 2:输入:n......
  • 算法笔记|Day34动态规划VII
    算法笔记|Day34动态规划VII☆☆☆☆☆leetcode198.打家劫舍题目分析代码☆☆☆☆☆leetcode213.打家劫舍II题目分析代码☆☆☆☆☆leetcode337.打家劫舍III题目分析代码☆☆☆☆☆leetcode198.打家劫舍题目链接:leetcode198.打家劫舍题目分析1.dp数组含义:d......
  • Java毕设项目II基于Java的高校学生课堂考勤系统的设计与实现
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言随着企业规模的持续扩大和业务的日益复杂......