【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 Falseif(matrix[t][l] == target or matrix[b][r] == target or matrix[t][r] == target or matrix[b][l] == target): return Trueif(matrix[t][l] > target): return Falseif(matrix[b][r] < target): return Falsen_r = rfor i in range(r-l+1):if(matrix[t][r-i] <= target):n_r = r-ibreakn_l = lfor i in range(r-l+1):if(matrix[b][l+i] >= target):n_l = l+ibreakn_b = bfor i in range(b-t+1):if(matrix[b-i][l] <= target):n_b = b-ibreakn_t = tfor i in range(b-t+1):if(matrix[t+i][r] >= target):n_t = t+ibreakreturn self.dfs(matrix,n_l,n_r,n_t,n_b,target)`

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

API数据能力开放架构 数据api接口

一.API数据接口可以从几个不同的角度来看待&#xff1a; 1. 技术角度&#xff1a;API数据接口是一种技术实现&#xff0c;通常是以HTTP协议或其他网络协议为基础&#xff0c;并采用特定的数据格式&#xff08;如JSON或XML&#xff09;来传递数据。 2. 业务角度&#xff1a;API…

前端input上传文件 使用new FormData()同时上传文件类型和JSON数据

失败案例 async uploadFileHandler(e) {if (e.target.files.length) {const files e.target.files[0];let formData new FormData();formData.append("file", files);formData.append("module", "knowledge");fileupload(formData).then(res …

JVM探究

JVM探究 请你谈谈你对JVM的理解&#xff1f;java -> class -> jvm java 8虚拟机和之前的变化更新OOM 内存溢出。栈溢出 StackOverFlowError > 怎么分析JVM的常用调优参数 &#xff1f; 扩大内存内存快照如何抓取&#xff0c;怎么分析Dump文件&#xff1f;知道吗&…

SAP 生产订单中计划成本问题简介

最近财务在月结的时候,发现有生产订单结算的时候有物料不存在计划成本,并且财务顾问反馈这个问题已经存在有一段时间了。通过对生产订单的成本分析按钮查看生产订单的成本 发现确实存在有物料不存在计划成本,但是生产订单存在实际成本。 1、首先想到的是无计划成本的原材料…

C语言易错知识点:scanf函数

scanf在C语言学习中比较常用&#xff0c;但因为其涉及屏幕缓冲区导致有的时候会调入陷阱&#xff0c;下面分享一下常见的需要注意的事项&#xff1a; 1.输入末尾带有回车\n 当我们输入数据后&#xff0c;最后按下回车时&#xff0c;屏幕缓冲区的末尾都会含有这个字符 scanf的…

leetcode110.平衡二叉树

之前没有通过的样例 return语句只写了一个 return abs(l-r)<1缺少了 isBalanced(root->left)&&isBalanced(root->right);补上就好了 class Solution { public:bool isBalanced(TreeNode* root) {if(!root){return true;}int lgetHeight(root->left);i…

(学习日记)2024.03.11:UCOSIII第十三节:使用优先级的流程 (持续更新)

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

vulntarget-k - 内网渗透

标签 xxl-job rce Spring-Cloud-CVE-2022-22947 nacos auth bypass iox 靶机难度比较简单&#xff0c;都是用用 exp 就好了 拓扑图 网卡设置 首先需要使用虚拟网络编辑器&#xff0c;增加 VMnet1、VMnet2、VMnet3 对三张网卡设置子网 IP VMnet1 192.168.100.0 VMnet2 1…

EM算法详解

EM(Expectation-Maximum)算法也称期望最大化算法,曾入选“数据挖掘十大算法”中,可见EM算法在机器学习、数据挖掘中的影响力。EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐…

SIP-7043 20W SIP网络有源吸顶喇叭

SIP-7043 20W SIP网络有源吸顶喇叭 一、描述 18123651365微信 声卡喊话IP喇叭&#xff0c;IP网络吸顶天花喇叭 SIP-7043VP是我司的一款SIP网络有源吸顶喇叭&#xff0c;具有10/100M以太网接口&#xff0c;内置有一个高品质扬声器&#xff0c;将网络音源通过自带的功放和喇叭…

jpg格式图片怎么生成二维码?扫码看图在线制作方法

多张jpg格式的图片如何做成二维码展示&#xff1f;jpg是现在最常用的一种图片格式&#xff0c;不管是拍摄的照片、设计图片或是其他类型的图片基本上都是这种格式。那么如何将jpg格式的图片放到二维码中展示呢&#xff1f;通过下面的文章内容来分享一下图片制作二维码在线的技巧…

scrcpy远程投屏控制Android

下载 下载后解压压缩包scrcpy-win64-v2.4.zip scrcpy连接手机 1. 有线连接 - 手机开启开发者选项&#xff0c;并开启USB调试&#xff0c;连接电脑&#xff0c;华为手机示例解压scrcpy&#xff0c;在scrcpy目录下打开终端&#xff0c;&#xff08;或添加scrcpy路径为环境变…

同态滤波算法详解

同态滤波是一种用于增强图像的方法&#xff0c;特别适用于去除图像中的照明不均和阴影。该算法基于照射反射模型&#xff0c;将图像分解为两个分量&#xff1a;照射分量&#xff08;illumination component&#xff09;和反射分量&#xff08;reflection component&#xff09;…

精品基于Uniapp+ssm停车场预约缴费微信小程序的设计与实现

《[含文档PPT源码等]精品微信小程序基于Uniappssm停车场微信小程序的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;ssm 安卓框架&…

Python打印输出Linux中最常用的linux命令之示例

一、Linux中的~/.bash_history文件说明&#xff1a; 该文件保存了linux系统中运行过的命令的历史。使用该文件来获取命令的列表&#xff0c;并统计命令的执行次数。统计时&#xff0c;只统计命令的名称&#xff0c;以不同参数调用相同的命令也视为同一命令。 二、示例代码&am…

csp模拟题(201604-2,俄罗斯方块模拟下坠)

题目 问题描述 俄罗斯方块是俄罗斯人阿列克谢帕基特诺夫发明的一款休闲游戏。   游戏在一个15行10列的方格图上进行&#xff0c;方格图上的每一个格子可能已经放置了方块&#xff0c;或者没有放置方块。每一轮&#xff0c;都会有一个新的由4个小方块组成的板块从方格图的上方…

应急响应实战笔记03权限维持篇(6)

0x00 前言 在渗透测试中&#xff0c;有三个非常经典的渗透测试框架----Metasploit、Empire、Cobalt Strike。 那么&#xff0c;通过漏洞获取到目标主机权限后&#xff0c;如何利用框架获得持久性权限呢&#xff1f; 0x01 MSF权限维持 使用MSF维持权限的前提是先获得一个met…

C++:vector类

vector的介绍及使用 1. vector 是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c; vector 也采用的连续存储空间来存储元素。也就是意味着可以采用下标对 vector 的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的…

提高转换效率的利器NCP13992ACDR2G 高性能电流模式LLC谐振变换器控制芯片

NCP13992ACDR2G产品概述&#xff1a; NCP13992ACDR2G是一款用于半桥谐振变换器的高性能电流模式控制器。该控制器实现了600 V栅极驱动器&#xff0c;简化了布局并减少了外部组件数量。内置的Brown−Out输入功能简化了控制器在所有应用程序中的实现。在需要PFC前级的应用中&…

采购代购系统独立站,接口采集商品上货

采购代购系统独立站的建设与商品上货接口的采集是一个综合性的项目&#xff0c;涉及前端开发、后端开发、数据库设计以及API接口的对接等多个环节。以下是一个大致的步骤和考虑因素&#xff1a; 一、系统规划与需求分析 明确业务需求&#xff1a;确定代购系统的核心功能&…