搜索二维矩阵 II【矩阵】【二分】

news/2025/3/15 11:55:19/

Problem: 240. 搜索二维矩阵 II

文章目录

  • 思路 & 解题方法
  • 复杂度
  • 暴力
  • 二分
  • bisect
  • Z

思路 & 解题方法

暴力、二分、Z

复杂度

时间复杂度:

暴力: O ( m n ) O(mn) O(mn)
二分: O ( m l o g n ) O(mlogn) O(mlogn)
Z: O ( m + n ) O(m + n) O(m+n)

空间复杂度:

添加空间复杂度, 示例: O ( n ) O(n) O(n)

暴力

class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:for x in matrix:for num in x:if num == target:return Truereturn False

二分

class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:for x in matrix:left, right = 0, len(matrix[0]) - 1while left <= right:mid = (left + right) // 2if x[mid] > target:right = mid - 1elif x[mid] < target:left = mid + 1else:return Truereturn False

bisect

class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:for x in matrix:idx = bisect.bisect_left(x, target)if idx < len(x) and x[idx] == target:return Truereturn False

Z

class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m, n = len(matrix), len(matrix[0])x, y = 0, n - 1while x < m and y >= 0:if matrix[x][y] == target:return Trueif matrix[x][y] > target:y -= 1elif matrix[x][y] < target:x += 1return False

http://www.ppmy.cn/news/1294949.html

相关文章

(leetcode)替换所有的问号 -- 模拟算法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题链接 力扣&#xff08;LeetCode&#xff09; 输入描述 string modifyString(string s) 输入一个字符串&#xff0c;字符串中仅包含小写字母和 ‘?’ 字符。 输出描述 将问号替换为小写字母&#xff0c;且这个替…

网络安全学习资源

好久没写博客了&#xff0c;记录一些宝藏学习资源&#xff0c;不定时更新 Regex Learn - Step by step, from zero to advanced. 这是一个我认为最好的正则表达式学习网站&#xff0c;很多正则表达式学习资料都只提供了一个概念&#xff0c;但是正则表达式需要大量的练习&#…

How to implement anti-crawler strategies to protect site data

How to implement anti-crawler strategies to protect site data 信息校验型反爬虫User-Agent反爬虫Cookie反爬虫签名验证反爬虫WebSocket握手验证反爬虫WebSocket消息校验反爬虫WebSocket Ping反爬虫 动态渲染反爬虫文本混淆反爬虫图片伪装反爬虫CSS偏移反爬虫SVG映射反爬虫字…

HAL——SPI

学习目标 掌握SPI配置方式掌握SPI读写操作 学习内容 需求 SPI配置 打开SPI1,选中全双工模式。观察下方自动生成的引脚&#xff0c;是否和自己开发板引脚对应。 修改引脚&#xff0c;来动右侧芯片引脚视图&#xff0c;找到开发板对应引脚&#xff0c;进行修改。 观察修改后的…

Android 车联网——多屏多用户(十五)

前面几篇文章介绍了多用户和多屏相关的 Manager 和 Service。上一篇文章最后虽然车内乘员都根据配置有自己的对应屏幕,但默认情况下,所有车内乘员依然使用的是当前主用户(司机用户),这一篇我们继续放下看一下用户的创建与分配。 一、用户创建分配 1、创建用户 对于创建用…

用HTML的原生语法实现两个div子元素在同一行中排列

代码如下&#xff1a; <div id"level1" style"display: flex;"><div id"level2-1" style"display: inline-block; padding: 10px; border: 1px solid #ccc; margin: 5px;">这是第一个元素。</div><div id"…

C++完成Query执行sql语句的接口封装和测试

1、在LXMysql.h 创建Query执行函数 //封装 执行sql语句 if sqllen 0 strlen获取字符长度bool Query(const char*sql,unsigned long sqllen0); 2、在LXMysql.cpp编写函数 bool LXMysql::Query(const char* sql, unsigned long sqllen){if (!mysql)//如果mysql没有初始化好{c…

Qt 的流式布局 FlowLayout

一直苦寻于一个比较智能的布局方式&#xff0c;能够满足软件界面进行resize的时候&#xff0c;对已经存在的布局进行重新布局。能够合理的判断界面的size,在界面放大的时候&#xff0c;显示的item的行数减少&#xff0c;相反&#xff0c;界面缩小的时候&#xff0c;显示的 item…