【剑指 Offer】剑指 Offer 04. 二维数组中的查找

这篇博客探讨了四种不同的Python实现方法,用于在二维数组中查找目标数值。第一种方法直接遍历矩阵,第二种方法使用了计数器,第三种方法采用双指针技术,最后一种方法同样使用双指针但优化了移动方向。所有方法都在时间和空间效率上进行了测试,展示了它们在不同场景下的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目
代码
执行用时:32 ms, 在所有 Python3 提交中击败了92.15% 的用户
内存消耗:19.1 MB, 在所有 Python3 提交中击败了27.07% 的用户
通过测试用例:129 / 129

class Solution:
    def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
        ans=False
        for line in matrix:
            if target in line:
                ans=True
        return ans

【方法2】
执行用时:56 ms, 在所有 Python3 提交中击败了8.25% 的用户
内存消耗:19.1 MB, 在所有 Python3 提交中击败了38.90% 的用户
通过测试用例:129 / 129

class Solution:
    def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
        ans=False
        for line in matrix:
            cnt=Counter(line)
            if target in cnt:
                ans=True
        return ans

【方法3】
执行用时:36 ms, 在所有 Python3 提交中击败了78.50% 的用户
内存消耗:19.2 MB, 在所有 Python3 提交中击败了17.49% 的用户
通过测试用例:129 / 129

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

【方法4】
执行用时:40 ms, 在所有 Python3 提交中击败了57.17% 的用户
内存消耗:19.1 MB, 在所有 Python3 提交中击败了35.09% 的用户
通过测试用例:129 / 129

class Solution:
    def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
        x,y=len(matrix)-1,0
        while x>=0 and y<len(matrix[0]):
            if matrix[x][y]<target:
                y+=1
            elif matrix[x][y]>target:
                x-=1
            elif matrix[x][y]==target:
                return True
        return False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值