题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
数组是有序的,每行递增,每列递增,所以可以取右上角或者左下角,如果从左下角开始查找,当要查找数字比左下角数字大时,右移;要查找数字比左下角数字小时,上移。同理当从右上角开始查找时,当要查找数字比右上角数字大时,下移;要查找数字比右上角数字小时,左移。
代码实现
# -*- coding:utf-8 -*-
# 从右上角开始查找
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array)
cols = len(array[0])
temp_rows = 0
temp_cols = cols-1
while(temp_rows<=rows-1 and temp_cols>=0):
if(array[temp_rows][temp_cols] == target):
return True
elif(array[temp_rows][temp_cols]<target):
temp_rows+=1
elif(array[temp_rows][temp_cols]>target):
temp_cols-=1
return False
# -*- coding:utf-8 -*-
# 从左下角开始查找
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
left = 0
right = len(array[0])-1
top = 0
bottom = len(array)-1
while(top<=bottom and left<=right):
select_num = array[bottom][left]
if(select_num == target):
return True
elif(target > select_num):
left+=1
continue
elif(target < select_num):
bottom-=1
continue
return False
京公网安备 11010502036488号