1.二维数组中的查找
问题:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解决:
思想:
抓住数据的特征,我们只需要从数组的最后一行的第一个元素,反向查找即可;
原理如下,如果每一行的第一个元素比target大,那么我们就没必要去看这一行后面的元素了,让 i 自减1;
java代码:
public class Solution {
public boolean Find(int target, int [][] array) {
int i=array.length-1;
int j=0;
while(i>=0 && j<=array[0].length-1){
if(array[i][j]>target){
i--;
}
else if(array[i][j]<target){
j++;
}
else{
return true;
}
}
return false;
}
}
python代码:
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
i=len(array)-1
j=0
while(i>=0 and j<=len(array[0])-1):
if(array[i][j]>target):
i-=1
elif(array[i][j]<target):
j+=1
else:
return True
return False