题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
直接遍历使用两层for循环,时间复杂度过高。
可以使用排除法,按列和行来找到位置,从而降低时间复杂度。因为数组行列都为递增所以可选取左下或者右上为起始点。
JavaCode:
public class Solution {
public boolean Find(int target, int [][] array) {
int row = array.length-1; // 定义行起始位置 , 选取左下点为其实点
int col = 0; //定义列起始位置
while(row>=0 && col<array[0].length) {
if(array[row][col] == target) { //若找到则返回true ,否则返回false
return true;
}else if(array[row][col] > target) { // 若当前值大于想要找寻的target则向上移动一行
row--;
}else { // 否则将列向后移动
col++;
}
}
return false;
}
}