【Python】Leetcode 240. 搜索二维矩阵 II - 削减矩阵+递归,击败88%

描述

  1. 搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。
该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。

思路

确定左右及上下限,削减矩阵,递归。
注意判断四个端点是否等于target,若有满足的返回true,否则判断左上角端点或右下角端点是否大于或小于target,满足则返回false,否则递归直到上下限溢出返回false。
可以证明,在以上判断条件下,每次递归都会导致矩阵被削减,时间复杂度为O(m+n)

复杂度

时间复杂度:
O(m+n)

空间复杂度:
O(1)
在这里插入图片描述

`class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
l = 0
r = len(matrix[0])-1
t = 0
b = len(matrix)-1
return self.dfs(matrix,l,r,t,b,target)

def dfs(self,matrix,l,r,t,b,target):
    print(l,r,t,b)
    if(r<l or b<t): return False
    if(matrix[t][l] == target or matrix[b][r] == target or matrix[t][r] == target or matrix[b][l] == target): return True
    if(matrix[t][l] > target): return False
    if(matrix[b][r] < target): return False
    n_r = r
    for i in range(r-l+1):
        if(matrix[t][r-i] <= target):
            n_r = r-i
            break
    
    n_l = l
    for i in range(r-l+1):
        if(matrix[b][l+i] >= target):
            n_l = l+i
            break
    
    n_b = b
    for i in range(b-t+1):
        if(matrix[b-i][l] <= target):
            n_b = b-i
            break
    
    n_t = t
    for i in range(b-t+1):
        if(matrix[t+i][r] >= target):
            n_t = t+i
            break

    return self.dfs(matrix,n_l,n_r,n_t,n_b,target)`

相关推荐

  1. 矩阵240.搜索矩阵II

    2024-03-14 20:12:03       41 阅读
  2. 240. 搜索矩阵 II

    2024-03-14 20:12:03       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 20:12:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 20:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 20:12:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 20:12:03       20 阅读

热门阅读

  1. 快速在Linux系统安装MySQL

    2024-03-14 20:12:03       21 阅读
  2. Android API 30及更高版本网络权限设置

    2024-03-14 20:12:03       19 阅读
  3. linux Shell 命令行-08-file include 文件包含

    2024-03-14 20:12:03       21 阅读
  4. PYTHON 120道题目详解(106-108)

    2024-03-14 20:12:03       20 阅读
  5. oracle创建表空间语句

    2024-03-14 20:12:03       19 阅读
  6. 触发器

    2024-03-14 20:12:03       19 阅读
  7. WPF中使用LiveCharts绘制散点图

    2024-03-14 20:12:03       19 阅读
  8. SQLite语句

    2024-03-14 20:12:03       22 阅读
  9. mysql订单表设计

    2024-03-14 20:12:03       18 阅读