【hot100】刷题记录(29)-搜索二维矩阵

题目描述:

给你一个满足下述两条属性的 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

我的作答:

每行每列搜索,因为矩阵是有序的;

python 复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        if not matrix: return False
        m = len(matrix)
        n = len(matrix[0])
        i, j = 0, 0
        while i<m and target>matrix[i][n-1]: #比每行的最后一个数大就跳过,+1
            i += 1
        if i>=m: return False #如果每行都比target小就false
        while j<n and target>matrix[i][j]: #该行的列搜索
            j += 1
        if j>=n: return False #如果该行没有就false
        if target!=matrix[i][j]: #跳出循环此时matrix[i][j]应该>=target
            return False
        else: return True

时间复杂度O(m+n),空间复杂度O(1)

参考:

二分法O(logmn)

python 复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m, n = len(matrix), len(matrix[0])
        left, right = -1, m * n
        while left + 1 < right:
            mid = (left + right) // 2
            x = matrix[mid // n][mid % n]
            if x == target:
                return True
            if x < target:
                left = mid
            else:
                right = mid
        return False
相关推荐
幻云20104 分钟前
Next.js之道:从入门到精通
人工智能·python
搞笑症患者4 分钟前
压缩感知(Compressed Sensing, CS)
算法·最小二乘法·压缩感知·正交匹配追踪omp·迭代阈值it算法
0和1的舞者6 分钟前
GUI自动化测试详解(三):测试框架pytest完全指南
自动化测试·python·测试开发·自动化·pytest·测试
ComputerInBook8 分钟前
代数学基本概念理解——幺正矩阵(Unitary matrix)(酉矩阵?)
线性代数·矩阵·正交矩阵·幺正矩阵·酉矩阵
im_AMBER8 分钟前
Leetcode 101 对链表进行插入排序
数据结构·笔记·学习·算法·leetcode·排序算法
大神君Bob21 分钟前
【AI办公自动化】教你使用Pytho让Word文档处理自动化
python
快手技术26 分钟前
AAAI 2026|全面发力!快手斩获 3 篇 Oral,12 篇论文入选!
前端·后端·算法
颜酱27 分钟前
前端算法必备:滑动窗口从入门到很熟练(最长/最短/计数三大类型)
前端·后端·算法
轻竹办公PPT28 分钟前
2025实测!AI生成PPT工具全总结
人工智能·python·powerpoint
做科研的周师兄29 分钟前
【MATLAB 实战】栅格数据 K-Means 聚类(分块处理版)—— 解决大数据内存溢出、运行卡顿问题
人工智能·算法·机器学习·matlab·kmeans·聚类