第一题 二维数组中的查找
思路:选择最右上角元素,判断是否相等,相等直接返回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; } }