题目
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public class Solution {
public boolean find(int target, int [][] array) {
}
}
1 3 5 7 9
2 6 10 12 18
实现代码如下:
public class Getnum {
public static void main(String args[]) {
int array[][]=new int[][] {{1,2,3,4},{5,7,8,10},{6,9,13,15}};
int target=15;
Getnum G=new Getnum();
System.out.println(G.find(target, array));
System.out.println(new Getnum().find(target, array));
//两种输出方法
}
public boolean find(int target,int array[][]) {
if(array==null||array.length==0||array[0].length==0) {
return false;
}
int rows=array.length;
int columns=array[0].length;
if(target>array[rows-1][columns-1]||target<array[0][0]) {
return false;
}
rows=0;
//从右上角开始遍历
for(int i=columns-1;i>=0&&rows<array.length;) {
if(array[rows][i]==target) {
return true;
}else if (array[rows][i]>target) {
i--;
}else if (array[rows][i]<target) {
rows++;
}
}
return false;
}
}