日期:2014-05-20  浏览次数:20695 次

Java判断是否有连数,比如12,13,14
java怎样判断任意10个数中不存在任意3个数是连数?

------解决方案--------------------
没感觉很难实现啊,除非你还追求什么超高效啥的,你是打算直接求现成代码啊还是算法啊?

先把这10个数字排个顺序,接下来就简单了吧?

设个阈值器,从头遍历到尾,当前的是上一个的连续数的就阈值+1,此时阈值==2就说明满足要求了;不是连续数就立即清0。
------解决方案--------------------
探讨
没感觉很难实现啊,除非你还追求什么超高效啥的,你是打算直接求现成代码啊还是算法啊?

先把这10个数字排个顺序,接下来就简单了吧?

设个阈值器,从头遍历到尾,当前的是上一个的连续数的就阈值+1,此时阈值==2就说明满足要求了;不是连续数就立即清0。

------解决方案--------------------
天才。。。。
探讨

没感觉很难实现啊,除非你还追求什么超高效啥的,你是打算直接求现成代码啊还是算法啊?

先把这10个数字排个顺序,接下来就简单了吧?

设个阈值器,从头遍历到尾,当前的是上一个的连续数的就阈值+1,此时阈值==2就说明满足要求了;不是连续数就立即清0。

------解决方案--------------------
2楼的方法 如果有相同大小的数 会有问题
------解决方案--------------------
将改数组排序,然后用排序后的数组Array[i]-Array[i-1],获得一个相邻数差值的新数组,此时判断该新数组中如果是否有3个连续的值为1的元素。
------解决方案--------------------
探讨
2楼的方法 如果有相同大小的数 会有问题

------解决方案--------------------
排序后 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
------解决方案--------------------
先排序倒是真的,然后就好办咯,哈哈!天才