题目描述:
在一个二维数组中每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。请完成这样一个函数,输入一个这样的二维数组和一个整数,判断数组中是否含有该整数。
算法思路:
首先我们可以先用一个实际的例子来引导我们的思考,比如有这样一个数组,第一行为{1,5,9,13},第二行为{2,6,10,14,},第三行为{3,7,11,15},第四行为{4,8,12,16},这个时候我们就能很直观的看见这个二维数组的规律,我们不妨这样思考:既然是查找一个二维数组是否包含某个整数,而这个二维数组又是有规律的,我们就可以用对照法,选择一个有代表性的位置作为参照物,比如左下角或者右上角。我暂且选择以右上角作为示范,如果目标数大于右上角,则行增加。如果目标数小于右上角,则列减少。否者就是找到目标数了。编写代码的过程注意中要注意控制好边界条件。
代码实现:
这里我以java语言作为示范,其他语言的使用者可以参照我的算法思路进行相应的代码实现
public class Solution {
public boolean Find(int target, int [][] array) {
int i=array.length-1;
int j=0;
while((i>=0)&&(j
if(array[i][j]>target)
{
i--;
}
else if(array[i][j]
{
j++ ;
}
else{
return true;
}
}
return false;
}
}
网友评论