搜索二维矩阵中的target——二分查找或者二叉搜索树(python)

复制代码
#方法一
#利用有序的特点,使用二叉搜索树的思想
class Solution:
    def searchMatrix(self,matrix:List[List[int]],target:int)->bool:
        if not matrix or not matrix[0]:
            return False
        rows=len(matrix)  #行
        cols=len(matrix[0])  #列
        r,c=0,cols-1   #起点,右上角
        while 0<=r<rows and 0<=c<cols:
            if matrix[r][c]==target:
                return True
            elif matrix[r][c]<target:
                r+=1
            else:
                c-=1
        return False
        

#方法二
class Solution:
    def searchMatrix(self,matrix:List[List[int]],target:int)->bool:
        if not matrix or not matrix[0]:
            return False
        rows=len(matrix)
        cols=len(matrix[0])
        for i in range(rows):
            if target>matrix[i][cols-1]:   #如果不在这一行,就在下一行
                continue
            if target in matrix[i]:  #检查是否在该行
                return True
        return False

思路:

这个二维矩阵,从左到右有序,从上到下有序,所以需要利用这个特点:

方法一:利用二叉搜索树的思想,从右上角出发开始寻找target,要么往左走,要么往右走,走的过程中,需要判断是否越界。

方法二:利用二分查找的思想,先找出目标值在哪一行,定位到行之后,再从该行里面去找。

相关推荐
wangchunyu1148 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
2501_9445215910 小时前
Immer 跨端三方库仓颉适配全流程
python·eclipse·django
信誓旦旦的程序猿10 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
2501_9445215910 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
Patrick在香港10 小时前
同一行 strftime,两台机器跑出两种日期
python·datetime·时区·locale·日期处理
2601_9679873710 小时前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程
python·opencv·yolo·目标检测·游戏自动化
meiying883810 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
人工智能导论实践课10 小时前
【GUI桌面开发3】PyCharm配置外部工具
ide·python·pycharm
一千柯橘10 小时前
LangChain 的实时输出处理: stream_events 和 Streaming
python·langchain·agent
贾公子11 小时前
图片 AIGC 检测接入实战——URL 与 Base64 的取舍、体积校验与「你送过去的可能不是那张图」
python·aigc