个人博客网:https://wushaopei.github.io/ (你想要这里多有)
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public class Solution {
public boolean Find(int target, int [][] array) {
//行数
int row = (int)array.length;
//列数
int cols = (int)array[0].length;
//判空
if(cols ==0 || row ==0){
return false;
}
if(target> array[1][1] && target>array[row-1][cols-1]){
return false;
}
int i = 0; //从第一行开始,索引为0 ,然后 i++
int j = cols - 1; // 从最后一列开始,所以为cols-1,然后 j--
while (i<row && j>=0){
//当前索引值大于传入整数,列左移,j--
if(array[i][j] > target ){
j--;
//由于数组中值依据从左往右递增,改行最后一列小于 target时,直接进入下一序列,进行下一轮比较
}else if(array[i][j] < target ){
i++;
}else {
return true;
}
}
return false;
}
}
测试用例:
1、 int [][] array = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
int target = 33;
2、 int[][] array = {{}};
int target = 1;
测试结果:
局限性: 此方法只限于二维数组为矩阵方阵时有效