剑指Offer刷题(一)二维数组中的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
根据数组的有序性,每一个元素下面的元素比它大,左边的元素比它小,所以可以从右上角的元素开始比较。如果target比它大,就向下移动,如果target比它小,就向左移动。
注意:
数组边界
public class Solution {
public boolean Find(int target, int [][] array) {
//boolean res = true;
int rows = array.length;
int columns = array[0].length;
//System.out.println("行数为:"+rows+"列数为:"+columns);
int i = 0;
int j = columns-1;
while(i<rows&&j>=0) {
int temp = array[i][j];
//System.out.println("这次的数是:"+temp);
if(target<temp) {
j--;
}else if(target>temp) {
i++;
}else {
return true;
}
}
return false;
}
忽略的地方:
刚开始的时候判断:
二维数组是否为空
行列是否存在
即
if(array==null||rows==0||columns==0) {
return false;
}