搜索二维矩阵中的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,要么往左走,要么往右走,走的过程中,需要判断是否越界。

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

相关推荐
DLYSB_18 小时前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
阿童木写作18 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
阿童木写作20 小时前
Python实现Temu图片批量翻译自动化教程
运维·人工智能·python·自动化
就是一只白21 小时前
复制地理信息python版本
python
看浪的路人21 小时前
第1讲:Agent 到底是什么?和 Chatbot 有什么区别
python·ai
瓦学妹1 天前
什么是网络索引?它是如何工作的?
大数据·网络·python·网络爬虫
天天爱吃肉82181 天前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车
海盗12341 天前
微软技术周报 ——2026-08-03
后端·python·microsoft·c#·.netcore
大数据魔法师1 天前
【最全详解】DuckDB Python 全套 API 语法、参数与实战用法(零基础全覆盖)
python·数据分析
MC皮蛋侠客1 天前
SQLAlchemy 系列(七):高级建模与高效写入——批量 DML、方言与扩展
数据库·python