二维数组中的查找

这是一个关于在二维有序数组中查找特定整数的算法实现。算法首先从数组的最后一行开始,如果目标值等于最后一行的最后一个元素,则返回True。如果目标值小于最后一行的最后一个元素,会倒序遍历该行直至找到目标值或遍历完。如果目标值大于最后一行的最后一个元素,会检查下一行。遍历结束后未找到目标值则返回False。

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

题目描述

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

解答

1,循环每一行,先判断当前行的最后一个元素与target是否相等,相等则return。

2,如果当前行最后一个元素大于target,则按照倒叙方式将target与当前行的元素比较。

3,如果当前行最后一个元素大于target,则去查下一行。

# coding:utf-8
class Solution:

    def Find(self, target, array):
        rols = len(array)
        row = 0
        rows = len(array[0])
        rol = rols - 1     # 存在array = [[]]的情况,所以要判断array[0]是否为空
        if rows == 0:
            return False
# 循环 while rol >= 0 and row < rols: if array[row][rol] == target: return True
# 最后一个元素大于target,则比较前面的元素 if array[row][rol] > target: rol -= 1 # 注意这里,当前行元素大于target,则rol -= 1;当前行元素小于target,则row += 1,就去查下一行。等于target,就return True else: row += 1 return False s = Solution() l = [ [1,3,5], [2,4,6], [3,5,7] ] ret = s.Find(0, l) print ret

结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值