您的位置:首页 > 编程语言 > Java开发

二维数组中的查找(java版)

2017-06-13 10:00 309 查看
【题目描述】在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

【解题思路1】

//1. 按行遍历二维数组,当前行遍历中,遇到比目标大的数字,则停止遍历。进入下一行的遍历。直到找到该数字,或遍历结束。

public class Solution {
public boolean Find(int target, int [][] array) {
int len1 = array.length;
if(len1 == 0){
return false;
}else{
int len2 = array[0].length, inx = len2;
for(int i=0; i<len1; i++){
for(int j=0; j<inx; j++){
if(array[i][j] == target){
return true;
}
if(array[i][j]>target){
inx = j;
break;
}
}
}
return false;
}
}
}


【解题思路2】

//1.利用二维数组由上到下,由左到右递增的规律,那么选取右上角或者左下角的元素a[row][col]与target进行比较。

//2.当target小于元素a[row][col]时,那么target必定在元素a所在行的左边, 即col–;

//3.当target大于元素a[row][col]时,那么target必定在元素a所在列的下边, 即row++;

public class Solution {
public boolean Find(int [][] array,int target) {
int row=0;
int col=array[0].length-1;
while(row<=array.length-1&&col>=0){
if(target==array[row][col])
return true;
else if(target>array[row][col])
row++;
else
col--;
}
return false;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 剑指offer-java