剑指Offer JZ1:
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目:
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
输入
7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
返回值
true
二、思路:
1.首先排序空数组问题,如果输入为空数组,直接返回False
2.因为二维数组的数字是有序排列的,[0][0]位置的数字最小,数组最后一个位置的数子最大,如果输入数字小于最小值,或者大于最大值,直接返回False
3.循环整个数组,一一对比,如果存在返回True,没有返回False
三、时间复杂度:
因为需要便利二维数组,需要两层for循环,所以时间复杂度为
代码如下(示例):
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
h = len(array)
l = len(array[0])
if array == [[]]:
return False
if target < array[0][0] | target > array[h-1][l-1] :
return False
for i in range(h):
for j in range(l):
if target == array[i][j]:
return True
return False
学习:
通过此代码:学习内容:
1.如何获取二维数组的行列数(二维数组array):
获取二维数组的行数= len(array)
获取二维数组的列数=len(array[0])