第一题 二维数组中的查找
思路:选择最右上角元素,判断是否相等,相等直接返回true;若元素值大于target,相当于筛掉了该元素所在列;若小于相当于筛掉了该元素所在行。当到达最左下角还未找到时结束循环,返回false。
时间复杂度:O(row+column),row为二维数组的行数,column为列数。
代码:
public class Solution {
public boolean Find(int target, int [][] array) {
int row = 0,column = array[0].length - 1;
while(row < array.length && column >= 0) {
if(array[row][column] == target)
return true;
else if(array[row][column] > target)
column--;
else
row++;
}
return false;
}
}