题目:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
首先呢,我们拿二维数组最右上角的那个数与要查找的数进行比较,如果相等,直接返回;如果这个数比要查找的数大,行号不变,列号减一;如果这个数比要查找的数小,列号不变,行号加一。
代码如下:
public static boolean select(int[][] arr, int num) { if (arr == null || arr.length < 1 || arr[0].length < 1) { return false; } int rows = arr.length;// 数组的行数 int cols = arr[0].length;// 数组的列数 // 右上角数的行和列 int row = 0; int col = cols - 1; while (row < rows && col >= 0) { if (arr[row][col] == num) { return true; } else if (arr[row][col] > num) { col--; } else { row++; } } return false; }
注意代码的健壮性,对空或数组长度的判断。