题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
暴力解决法:(一个一个测试)
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
if not array:
return
row = len(array)
col = len(array[0])
for i in range(row):
for j in range(col):
if array[i][j] == target:
return True
return False
另一种解法:
左下角元素m是行中最小的,是一列中最大的。
- 当m == target时,查到结果,直接返回;
- 当m > target时,因为m是一行中最小的,所以向上移动一行,继续查找;
- 当m < target时,因为m是一列中最大的,所以向右移动一列,继续查找。
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array) - 1
cols= len(array[0]) - 1
i = rows
j = 0
while j<=cols and i>=0:
if target<array[i][j]:
i -= 1
elif target>array[i][j]:
j += 1
else:
return True
return False