发表时间:2010-05-27
fairplay 写道 class findValue { static main(args){ int[] a= [1,3,3,2,4,6]; int[] b= [1,5,4,2,3,3]; a=Arrays.asList(a).sort().toArray(); b=Arrays.asList(b).sort().toArray(); check(a); check(b); } static check(int[] a){ for(i in 0..a.length-2){ if((a[i+1]-a[i]==1)||a[i+1]==a[i]){ }else{ println('该数组不连续:'+a); break; } } } } 该数组不连续:[1, 2, 3, 3, 4, 6] 这是java代码吗???我大概的看了一下,语法错误太多了,伪代码吧!不过思路是对的。 a=Arrays.asList(a).sort().toArray(); b=Arrays.asList(b).sort().toArray(); 这两句应该改成: Arrays.sort(a); Arrays.sort(b);没必要转化成List了吧,list压根没有sort()方法! |
|
发表时间:2010-05-27
public static boolean isSequenceNumber(int[] array) {
int arrayLen = array.length; int maxValue = Integer.MIN_VALUE; int minValue = Integer.MAX_VALUE; for (int index = 0; index < arrayLen; index++) { if (maxValue < array[index]) { maxValue = array[index]; } if (minValue > array[index]) { minValue = array[index]; } } if (maxValue - minValue >= arrayLen - 1) { return false; } int[] bucketArray = new int[arrayLen]; for (int index = 0; index < arrayLen; index++) { if (bucketArray[array[index] - minValue] == 0) { bucketArray[array[index] - minValue] += 1; } } boolean isEnd = false; for (int index = 0; index < arrayLen; index++) { if (isEnd && bucketArray[index] > 0) { return false; } if (bucketArray[index] == 0) { isEnd = true; } } return true; } |
|
发表时间:2010-05-27
//1.确定不重复 2.(max - min + 1) == nums.length 3. 1~9之间
int[] nums = [1, 3, 2, 4, 6] int a[9] = {0}; int min=0, max=0; for( int i : nums){ if(i<=0 || i>9){ return "不连续" } else{ if(a[i-1]==0){ a[i-1]=1 }else{ return "不连续" } if(i < min){min = i;} if(i > max){max = i;} } } if((max - min + 1) == nums.length){ return "连续" }else{ return "不连续" } ps: 我有一个疑问:[1,23,45]是否也满足要求呢? |
|
发表时间:2010-05-27
先排序后在连续两个数比较
|
|
发表时间:2010-05-27
ryxxlong 写道 fairplay 写道 class findValue { static main(args){ int[] a= [1,3,3,2,4,6]; int[] b= [1,5,4,2,3,3]; a=Arrays.asList(a).sort().toArray(); b=Arrays.asList(b).sort().toArray(); check(a); check(b); } static check(int[] a){ for(i in 0..a.length-2){ if((a[i+1]-a[i]==1)||a[i+1]==a[i]){ }else{ println('该数组不连续:'+a); break; } } } } 该数组不连续:[1, 2, 3, 3, 4, 6] 这是java代码吗???我大概的看了一下,语法错误太多了,伪代码吧!不过思路是对的。 a=Arrays.asList(a).sort().toArray(); b=Arrays.asList(b).sort().toArray(); 这两句应该改成: Arrays.sort(a); Arrays.sort(b);没必要转化成List了吧,list压根没有sort()方法! 这个是groovy代码吧 |
|
发表时间:2010-05-27
aws 写道 ryxxlong 写道 fairplay 写道 class findValue { static main(args){ int[] a= [1,3,3,2,4,6]; int[] b= [1,5,4,2,3,3]; a=Arrays.asList(a).sort().toArray(); b=Arrays.asList(b).sort().toArray(); check(a); check(b); } static check(int[] a){ for(i in 0..a.length-2){ if((a[i+1]-a[i]==1)||a[i+1]==a[i]){ }else{ println('该数组不连续:'+a); break; } } } } 该数组不连续:[1, 2, 3, 3, 4, 6] 这是java代码吗???我大概的看了一下,语法错误太多了,伪代码吧!不过思路是对的。 a=Arrays.asList(a).sort().toArray(); b=Arrays.asList(b).sort().toArray(); 这两句应该改成: Arrays.sort(a); Arrays.sort(b);没必要转化成List了吧,list压根没有sort()方法! 这个是groovy代码吧 原来如此,唉,真是井底之蛙啊,惭愧 !!!!!!! |
|
发表时间:2010-05-27
说下我的思路:
循环一遍,放到Set中,记下Set集长度setLenth,同时将最大值max最小值min拿到 当且仅当max-min+1=setLenth满足条件 不知道我这个思路有没有问题,望指出问题! |
|
发表时间:2010-05-27
当然是拿到最大最小数,算出中间间隔的数。
将数组剔除重复数字后,比较长度是否相等 |
|
发表时间:2010-05-27
2022228 写道 当然是拿到最大最小数,算出中间间隔的数。
将数组剔除重复数字后,比较长度是否相等 看看你上面的回帖,是不是你想要表达的意思 |
|
发表时间:2010-05-27
放入set
两端的值的差除以set的size |