题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
第一种:遍历循环
public class Solution {
public boolean Find(int target, int [][] array) {
boolean Find=false;
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
if(array[i][j]==target){
Find=true;
break;
}
}
}
return Find;
}
}
第二种:根据条件,如果要查找的数字大于数组中的数字,那么要查找的数字肯定在右边或者下边,如果小于,则要查找的数字肯定在左边或者上边。所以推荐从左下角或者右上角开始查找。
public class Solution {
public boolean Find(int target, int [][] array) {
boolean Find=false;
int row = array.length;
int col = array[0].length;
//从左下角开始查找
int i,j;
for( i=row-1,j=0;i>=0&&j<col;){
if(target ==array[i][j]){
Find=true;
break;
}else if(target <array[i][j]){
i--;
continue;
}else if(target >array[i][j]){
j++;
continue;
}
}
return Find;
}
}