剑指offer二维数组中的查找python
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
将整数与二维数组中的数进行比较
由题意可知,在矩阵中,一个数字的左边和上边的数字小于该数字,右边和下边的数字大于该数字。所以在遍历的时候,用大小判断时,假如出现当前位置的数字小于(大于)目标数字时候,不知道向上还是向左移动当前位置的问题。所以,为了解决这样的麻烦,我们把矩阵的左下角位置的数选做基准点,作为初始位置,当前位置就只能有2个移动方向,向右或者向上。
当目标数字大于当前数字时,当前位置向右移动,当目标数字小于当前数字时,当前位置向上移动。最终便可以判断是否有该整数。
代码
1 # -*- coding:utf-8 -*- 2 class Solution: 3 # array 二维列表 4 def Find(self, target, array): 5 # write code here 6 if not target or not array: 7 return False 8 a = len(array) - 1 9 b = 0 10 while 0 <= a < len(array) and 0 <= b < len(array[0]): 11 if target == array[a][b]: 12 return True 13 if target > array[a][b]: 14 b += 1 15 continue 16 if target < array[a][b]: 17 a -= 1 18 continue 19 return False 20