zoukankan      html  css  js  c++  java
  • 二维数组中的查找

    题目描述


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

    思路


    1 2 8 9
    2 4 9 12
    4 7 10 13
    6 8 11 15
    

      首先,我们将要查找的数字(命为tag)与右上角的数字比较。a.如果相等,则查找结束。b.如果tag小,那么删除一列。c.如果tag大,那么删除一行。所以我们可以这样缩小范围。

    Python实现


    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author  : MarkXu
    
    def find(tag, array):
        rows = len(array) # 获取二维数组的行数
        cols = len(array[0]) # 获取二维数组的列数
        # 定义二维数组的两个索引,这里取[0][cols-1]即为右上角的数字
        i = 0
        j = cols - 1
    
        # 注意终止条件
        while i<=rows-1 and j>=0:
            if tag < array[i][j]:
                # 删除一列,也就是j-1
                j -= 1
            elif tag > array[i][j]:
                # 删除一行,注意,这里的删除是指向下增加,即i+1
                i += 1
            else:
                return True
        return False
        
    if __name__ == "__main__":
        array = [[1, 2, 8,9], 
                 [2, 4, 9, 12], 
                 [4, 7, 10, 13],
                 [6, 8, 11, 15]]
    
        tag = 5
        print(find(tag, array))
    
  • 相关阅读:
    数据挖掘笔记(2018-03-22发布于知乎)
    使用Graphlab参加Kaggle比赛(2017-08-20 发布于知乎)
    大数据笔记
    2018网易游戏数据挖掘实习生笔试面经
    数据库课程设计之图书借阅管理系统
    居中
    lucene
    eclipse中使用git
    yii
    工作总结
  • 原文地址:https://www.cnblogs.com/selfcs/p/12696257.html
Copyright © 2011-2022 走看看