python二维列表添加行_10行python代码搞定有序二维数组中的查找

题目:

一个矩阵从左到右值依次增大,从上到下依次增大,现在给你一个数,如果矩阵中存在这个数则返回位置,否则返回-1

分析:

1 4 5 7 9

2 6 8 9 10

4 7 9 11 12

假如给出以上二维数组,由于每行是递增的,每列也是递增的,因此从右上角的“9”开始查找。如果target=9,则直接返回右上角位置;如果target>9,当前9所在的行都是比9小的,当前行可以删掉不考虑;如果target<9,当前9所在的列都是比9大的,当前列可以删掉不考虑。

代码:

def find_val(arr, target, row_start, col_end):

if row_start >= len(arr) or col_end < 0:

return -1

pivot = arr[row_start,col_end]

if target == pivot:

return (row_start,col_end)

elif target > pivot:

return find_val(arr, target, row_start+1, col_end)

else:

return find_val(arr, target, row_start, col_end-1)

if __name__ == '__main__':

arr = np.array([[1,4,5,7,9], [2,6,8,9,10], [4,7,9,11,12]])

print(find_val(arr, 19, 0, 4))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值