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

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

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


备战蓝桥杯 倒计时70天


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


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


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


问题描述:

ca24a0c5933f443e9f7fb180fcc46253.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

85241ba827c14bd5a577f2b9ad641f83.png

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

2f27359f841d44b5a4dd947a4d1f16be.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

7149bc7cc3cc449287bcfdb7669462a0.png

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

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


相关文章
|
3月前
|
Python
Python计算误码率,输入是0-1比特流矩阵和小数矩阵
本文提供了一个Python函数calculate_ber,用于计算两个NumPy矩阵表示的二进制信号和接收信号之间的误码率(BER),其中包括信号与接收信号的比较、误差计数以及BER的计算过程,并给出了具体的使用示例。
66 2
|
8天前
|
Python
二分查找变种大赏!Python 中那些让你效率翻倍的搜索绝技!
二分查找是一种高效的搜索算法,适用于有序数组。其基本原理是通过不断比较中间元素来缩小搜索范围,从而快速找到目标值。常见的变种包括查找第一个等于目标值的元素、最后一个等于目标值的元素、第一个大于等于目标值的元素等。这些变种在实际应用中能够显著提高搜索效率,适用于各种复杂场景。
26 9
|
9天前
|
算法 数据处理 开发者
超越传统:Python二分查找的变种策略,让搜索效率再上新台阶!
本文介绍了二分查找及其几种Python实现的变种策略,包括经典二分查找、查找第一个等于给定值的元素、查找最后一个等于给定值的元素以及旋转有序数组的搜索。通过调整搜索条件和边界处理,这些变种策略能够适应更复杂的搜索场景,提升搜索效率和应用灵活性。
24 5
|
1月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
69 10
|
1月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
86 4
|
2月前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
在数据密集型应用中,高效搜索算法至关重要。Trie树(前缀树/字典树)通过优化字符串处理和搜索效率成为理想选择。本文通过Python实战演示Trie树构建与应用,显著提升搜索性能。Trie树利用公共前缀减少查询时间,支持快速插入、删除和搜索。以下为简单示例代码,展示如何构建及使用Trie树进行搜索与前缀匹配,适用于自动补全、拼写检查等场景,助力提升应用性能与用户体验。
54 2
|
3月前
|
安全 应用服务中间件 网络安全
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
54 11
|
2月前
|
Python
Python 练习实例44 - Python 两个矩阵相加
Python 练习实例44 - Python 两个矩阵相加
|
3月前
|
算法 JavaScript Python
【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径
Leetcode第79题"单词搜索"的Python解决方案,使用回溯算法在给定的二维字符网格中搜索单词,判断单词是否存在于网格中。
41 4
|
3月前
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
32 0
【Leetcode刷题Python】73. 矩阵置零