二维数组查询算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组查询算法相关的知识,希望对你有一定的参考价值。
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
实现思路:由于行列都为递增排序,所以可以从左下角开始比较查询,若目标值target大于该数,则将查询位置右移,否则上移,即可达到查询目的。
代码:
1 #_*_coding:utf-8_*_ 2 3 class Solution: 4 # array 二维列表 5 def Find(self, target, array): 6 # write code here 7 m = len(array)-1 #当前行数,从零开始 8 n = len(array[0])-1 #获取二维列表的列数 9 i = 0 #当前列数 10 while m>=0 and i<=n: 11 if array[m][i] > target: 12 m = m - 1 13 print m,i 14 elif array[m][i] < target: 15 i = i + 1 16 else: 17 return True 18 return False 19 20 solution = Solution() 21 array = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]] 22 target = 20 23 print solution.Find(target,array)
以上是关于二维数组查询算法的主要内容,如果未能解决你的问题,请参考以下文章
2018年全国多校算法寒假训练营练习比赛(第五场)-E情人节的电灯泡(二维树状数组单点更新+区间查询)