剑指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             
原文地址:https://www.cnblogs.com/wangzhihang/p/11776257.html