Java判断是否有连数,比如12,13,14
java怎样判断任意10个数中不存在任意3个数是连数?
------解决方案--------------------
没感觉很难实现啊,除非你还追求什么超高效啥的,你是打算直接求现成代码啊还是算法啊?
先把这10个数字排个顺序,接下来就简单了吧?
设个阈值器,从头遍历到尾,当前的是上一个的连续数的就阈值+1,此时阈值==2就说明满足要求了;不是连续数就立即清0。
------解决方案--------------------
------解决方案--------------------天才。。。。
------解决方案-------------------- 2楼的方法 如果有相同大小的数 会有问题
------解决方案--------------------将改数组排序,然后用排序后的数组Array[i]-Array[i-1],获得一个相邻数差值的新数组,此时判断该新数组中如果是否有3个连续的值为1的元素。
------解决方案--------------------
------解决方案-------------------- 排序后 1 2 2 3 5 这种情况 你的方法就满足不了把
------解决方案-------------------- 你的阈值器 的值 分别是 1 0 1 在处理 1 2 2 3 的时候
------解决方案--------------------判断第一个和第三个熟的和是不是等于第二个数的2倍 而且 第一个和第三个数不相等,
以此类推
------解决方案--------------------加群:199632302 进行交流
------解决方案--------------------2楼的方法可以,并且没必要清零,楼主要的是判断 只要任意10个数中存在连数就可以输出结果了,如果楼主有其他要求 请说出来
------解决方案--------------------Java code
public class FindSeq {
private int[] arr = null;
private int length = 0;
public FindSeq(int [] arr){
this.arr = arr;
this.length = arr.length;
}
/**
* @param args
*/
public static void main(String[] args) {
FindSeq findSeq = new FindSeq(new int[] {1,3,3,12,2});
findSeq.find3Seq();
}
public void find3Seq(){
int index = 0;
boolean has = false;
while(index < length - 2){
if(find3Seq(index)){
has = true;
break;
}else{
index += 3;
}
}
System.out.print(has);
}
private boolean find3Seq(int index){
return arr[index] + 1 == arr[index + 1] && arr[index + 1] + 1 == arr[index + 2];
}
}
------解决方案--------------------
晕,while里的else应该写
index++
才对
------解决方案--------------------
怎么说LZ才好呢,需要找出是否是连数,就像楼上一些大神说的一样,你直接来个冒泡排序,小到大或者大到小都可以,然后最后循环排序后的数组,比较不就可以了么!
------解决方案--------------------
楼主的意思...
345859632
假如这一串数字
其中连续的数有3、4、5 和 58、59
------解决方案--------------------
先排序倒是真的,然后就好办咯,哈哈!天才