- /**
- * 给定一个int数组,写一个函数判断该数组中的所有数字是否能组成连续数字。
- * 如[1,3,4,6,2,5]能组成连续数字,【1,2,5,4,7】不能。数组中的数也可能重复.
- *
- * @author Administrator 2010-5-29
- */
- public static boolean isContinousArray1(int[] intArr) {
- if (intArr == null)
- return false;
- if (intArr.length < 2)
- return true;
- int maxInt = intArr[0], minInt = intArr[0];
- for (int i : intArr) {
- if (i > maxInt)
- maxInt = i;
- if (i < minInt)
- minInt = i;
- }
- for (int value = minInt; value <= maxInt; value++) {
- boolean found = false;
- for (int j : intArr) {
- if (j == value) {
- found = true;
- break;
- }
- }
- if (!found)
- return false;
- }
- return true;
- }
- public static void isContinousArray2(int[] arr) {
- Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
- for (int i : arr) {
- map.put(i, (i - 1));
- }
- boolean firstIsNull = true;
- for (int i : map.keySet()) {
- if (map.get(map.get(i)) != null) {
- System.out.println("能组成连续数字.");
- continue;
- } else if (firstIsNull) {
- firstIsNull = false;
- } else {
- System.out.println("不能组成连续数字.");
- break;
- }
- }
- }