ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python算法练习题

2022-06-14 20:34:08  阅读:154  来源: 互联网

标签:练习题 elif python list 目标 右上角 算法 数组 print


1、二维有序数组中查找一个数

在n*m数组中,每行递增,每列递增,设计代码,查找数组中是否有目标数

如矩阵
l=[
[1,4,7,11],
[2,5,8,12],
[3,6,10,16]
]
给定目标数9,返回false;给定目标数10,返回true。

思路:
从左下角或者右下角开始,从第一行开始,如对右上角的数字和目标进行对比,如果右上角比目标小,代表第一行都没有数字,可以从下一行开始;如果右上角数组和目标对比,如果右上角比目标大,代表右上角所在的一列,都比目标数字大,下一次可以从倒数第二列开始。一直缩小范围,直到找到或者找不到目标数。

def find_num(targ,list):
    r,l = len(list),len(list[0])-1      #r为长度,l为列下标,所以l-1
    i = 0
    while 0 <= i <r:
        print('i = %d' % i)             #i为行的下标,打印下
        if list[i][l] == targ:
            return True
        elif list[i][l] < targ and l>= 0:
            print(list[i][l])
            i += 1                      #下移一行
        elif list[i][l] > targ and l>= 0:
            print(list[i][l])
            l -= 1                      #左移1列
        elif l<0:
            return False
    return False

l=[
    [1,4,7,11],
    [2,5,8,12],
    [3,6,10,16]
]
print(find_num(9,l))

标签:练习题,elif,python,list,目标,右上角,算法,数组,print
来源: https://www.cnblogs.com/ua-21/p/16376189.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有