题目:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
先将target与数组的最后一列的值比较,
如果target等于该数组的值就返回,
如果 大于,就和这一列的下一行比较,依次类推
如果小于,就和同一行的前一列值比较,依次类推
public class T4 {
public static boolean Find(int target, int[][] array) {
int n = array.length - 1;
int m = array[0].length - 1;
if (array == null || n == 0 || m == 0)
return false;
if (target > array[n][m] || target < array[0][0])
return false;
int row = 0;
int col = m;
while (row <= n && col >= 0) {
if (target == array[row][col])
return true;
else if (target > array[row][col])
row++;
else
col--;
}
return false;
}
public static void main(String[] args) {
int[][] array = { { 1, 2, 3, 10 }, { 4, 5, 6, 11 }, { 7, 8, 9, 12 } };
int target = 10;
System.out.println(Find(target, array));
}
}
输出结果:
true