机试题(二)
给定一个int数组,写一个函数判断该数组中的所有数字是否能组成连续数字。如[1,3,4,6,2,5]能组成连续数字,【1,2,5,4,7】不能。数组中的数也可能重复
方法一:
先用一个循环找出数字中的最大值和最小值,然后从最小到最大值在数组中循环查找对应数字,只要有一个数没有找到,就返回false,如果都找到了,就返回true.?
int[] a = new int[]{1,3,6,4,5,2,3}; int[] b = new int[]{5,4,6,5,3,1}; Arrays.sort(a); Arrays.sort(b); check(a,"a[1,3,6,4,5,2,3]"); check(b,"b[5,4,6,5,3,1]"); public void check(int[] nums,String str){ for(int i=0;i<nums.length-1;i++){ if(nums[i+1]-nums[i] != 1 && nums[i] != nums[i+1]){ System.out.println(str+"不连续..."); break; } } }
?
结果:
b[5,4,6,5,3,1]不连续...