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

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

相关推荐
源码之家2 小时前
计算机毕业设计:基于Python的美食推荐分析系统 Django框架 爬虫 协同过滤推荐算法 可视化 推荐系统 数据分析 大数据(建议收藏)✅
爬虫·python·机器学习·django·flask·课程设计·美食
2301_814590252 小时前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
sun_tao12 小时前
LlamaIndex + Qwen3.5-4B 关闭 Thinking 模式调试记录
python·llamaindex·qwen3.5-4b·huggingfacellm
书到用时方恨少!3 小时前
Python os 模块使用指南:系统交互的瑞士军刀
开发语言·python
带娃的IT创业者4 小时前
WeClaw_40_系统监控与日志体系:多层次日志架构与Trace追踪
java·开发语言·python·架构·系统监控·日志系统·链路追踪
亓才孓4 小时前
【提示词五要素】
python·ai·prompt
财经资讯数据_灵砚智能4 小时前
全球财经资讯日报(夜间-次晨)2026年3月28日
大数据·人工智能·python·语言模型·ai编程
水哥ansys4 小时前
Pyansys-PyMAPDL基本语法01-APDL原生命令流改写格式
python·二次开发·水哥ansys·pyansys·apdl
迷藏4944 小时前
# 发散创新:低代码开发新范式——用可视化逻辑构建企业级业务系统 在当今快速迭代的软件工程实践
java·python·低代码