• 编程题练习


    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

    请写一个函数,输入这样一个二维数组和一个整数,判断数组中是否有该整数。

    思路:

    矩阵是有序的,从左下角来看,向上是递减的,向右是递增的。

    因此从左下角出发,当目的数字比当前数字大的时候,(右移)就执行向右查询;当目的数字比当前数字小的时候,就向上继续查询(上移)。

     1 #!/usr/bin/env python3
     2 # -*- coding: utf-8 -*-
     3 
     4 def find_num(ary, num):
     5         row = len(ary) - 1
     6         while row >= 0 :
     7                 for i in range(len(ary[row])):
     8                         if num == ary[row][i]:
     9                                 return True
    10                         #如果目的数字小于当前数字,就跳出当前循环,上移一行
    11                         if num < ary[row][i]:
    12                                 break
    13                         #如果目的数字大于当前数字,就执行向右查询。
    14                         #如果右移玩一行都没有找到的话,就上移。
    15                         if num > ary[row][i]:
    16                                 continue
    17                 row -= 1
    18         return False
    19 
    20 if __name__ == '__main__':
    21         a = [[1,3,5],[2,4,6,8]]
    22         print(find_num(a, 5))
  • 相关阅读:
    排序
    多线程
    swift demo
    支付宝支付
    TV端产品设计法则和分析
    产品经理提升修炼的方法
    “互联网+”不是传统企业的万金油
    我眼中理想的程序员
    来谈谈产品的模仿与抄袭的问题
    产品体验成就产品
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6428479.html
Copyright © 2020-2023  润新知