Leedcode 每日一练 搜索二维矩阵Ⅰ Python实现

简介: Leedcode 每日一练 搜索二维矩阵Ⅰ Python实现

大一在读 大数据管理与应用专业 欢迎交流

备战蓝桥杯 倒计时70天

目前主要学习Python算法与数据结构

算法人算法魂 算法题让我们敢于挑战自己做意想不到的事情

快来试试今天的每日一练吧 Python小伙伴



问题描述:

image.png




来感受一下Python的简洁:遍历法(比较慢)

class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        for i in matrix:
            if target in i:return True
        return False

image.png

遍历法优化加强版:大于右上角最后一个元素 下移 否则左移动 注意特殊情况i>len(matrix)-1


class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        i=0
        while matrix[i][-1]<target:
            i+=1
            if i>len(matrix)-1:return False
        return True if target in matrix[i] else False

image.png

终极加强版:二分法(对上一种的再次优化)


我们不再通过遍历查找’右上角‘元素 而是通过二分法查找 再在内部进行二分


class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m,n=len(matrix[0]),len(matrix)
        l,r=-1,len(matrix)
        while l+1<r:
            mid=(l+r)//2
            if matrix[mid][-1]>=target:#r指向右上角大于等于target的编号
                r=mid
            else:
                l=mid#l指向右上角小于target的元素
        if r==len(matrix):return False#特殊情况
        l1,r1=0,len(matrix[r])-1
        while l1<=r1:
            mid1=(l1+r1)//2
            if matrix[r][mid1]>target:
                r1=mid1-1
            elif matrix[r][mid1]<target:
                l1=mid1+1
            else:
                return True
        return False


image.png

效率一般 说明有时利用好Python内置的函数反而更快 不过这种思想要掌握


第一次二分查找时 二分写法利用了区域划分的写法

可以有效地防止出错 可以看我这篇博客 传送门!

https://blog.csdn.net/m0_62277756/article/details/122711847?spm=1001.2014.3001.5501


目录
相关文章
|
3月前
|
Python
Python计算误码率,输入是0-1比特流矩阵和小数矩阵
本文提供了一个Python函数calculate_ber,用于计算两个NumPy矩阵表示的二进制信号和接收信号之间的误码率(BER),其中包括信号与接收信号的比较、误差计数以及BER的计算过程,并给出了具体的使用示例。
60 2
|
1月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
64 10
|
1月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
82 4
|
2月前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
在数据密集型应用中,高效搜索算法至关重要。Trie树(前缀树/字典树)通过优化字符串处理和搜索效率成为理想选择。本文通过Python实战演示Trie树构建与应用,显著提升搜索性能。Trie树利用公共前缀减少查询时间,支持快速插入、删除和搜索。以下为简单示例代码,展示如何构建及使用Trie树进行搜索与前缀匹配,适用于自动补全、拼写检查等场景,助力提升应用性能与用户体验。
50 2
|
3月前
|
安全 应用服务中间件 网络安全
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
51 11
|
2月前
|
Python
Python 练习实例44 - Python 两个矩阵相加
Python 练习实例44 - Python 两个矩阵相加
|
3月前
|
算法 JavaScript Python
【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径
Leetcode第79题"单词搜索"的Python解决方案,使用回溯算法在给定的二维字符网格中搜索单词,判断单词是否存在于网格中。
39 4
|
3月前
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
29 0
【Leetcode刷题Python】73. 矩阵置零
|
4月前
|
算法 数据处理 索引
告别低效搜索!Python中Trie树与Suffix Tree的实战应用秘籍!
【7月更文挑战第21天】探索Python中的字符串搜索效率提升:使用Trie树与Suffix Tree。Trie树优化单词查询,插入和删除,示例展示其插入与搜索功能。Suffix Tree,复杂但强大,适用于快速查找、LCP查询。安装[pysuffixtree](https://pypi.org/project/pysuffixtree/)库后,演示查找子串及最长公共后缀。两者在字符串处理中发挥关键作用,提升数据处理效率。**
44 1
|
4月前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
【7月更文挑战第19天】Trie树,又称前缀树,是优化字符串搜索的高效数据结构。通过利用公共前缀,Trie树能快速插入、删除和查找字符串。
106 2