剑指offer刷题第一题

第一题 二维数组中的查找

思路:选择最右上角元素,判断是否相等,相等直接返回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;
    }
}

猜你喜欢

转载自www.cnblogs.com/csdeblog/p/10434140.html