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

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

相关推荐
星空椰17 小时前
Python 面向对象高级:继承与类定义详解
开发语言·python
凯瑟琳.奥古斯特18 小时前
高阶子查询题目精炼
开发语言·数据库·python·职场和发展·数据库开发
风之所往_18 小时前
Python 3.4 新特性全面总结
python
太阳上的雨天19 小时前
任何格式的文件转Markdown
python·ai
yaoxin52112319 小时前
419. 现代 Java IO 最佳实践 - 写入文本文件
java·windows·python
weixin_4684668519 小时前
纳米 AI 搜索新手极速上手指南
人工智能·python·深度学习·搜索引擎·ai·语言模型·自然语言处理
凯瑟琳.奥古斯特19 小时前
数据库原理选择题精选
数据库·python·职场和发展
逻辑君19 小时前
Foresight研究报告【20260011】
人工智能·线性代数·算法·矩阵
彦为君20 小时前
JavaSE-07-异常机制
java·开发语言·后端·python·spring