美文网首页
最长的连续元素序列的长度

最长的连续元素序列的长度

作者: 名字是乱打的 | 来源:发表于2020-03-28 22:28 被阅读0次

    题目描述

    给定一个无序的整数类型数组,求最长的连续元素序列的长度。
    例如:
    给出的数组为[100, 4, 200, 1, 3, 2],
    最长的连续元素序列为[1, 2, 3, 4]. 返回这个序列的长度:4
    你需要给出时间复杂度在O(n)之内的算法

    思路:

    先排序,记住三个数
    int count=1;//当前连续序列长度
    int last=num[0];//上一个数字(连续判断条件)
    int max=1;//前面最大的连续序列长度
    做的时候搞错了一个点,就是1,1,2,3,算连续三个,我算成连续四个了,后来改掉了

    代码:

     public int longestConsecutive(int[] num) {
    //        给定一个无序的整数类型数组,求最长的连续元素序列的长度。
    //        例如:
    //        给出的数组为[100, 4, 200, 1, 3, 2],
    //        最长的连续元素序列为[1, 2, 3, 4]. 返回这个序列的长度:4
    //        你需要给出时间复杂度在O(n)之内的算法
            if(num.length<=1){
                return num.length;
            }
            Arrays.sort(num);//对数组重数据进行一次排序
            int count=1;//当前连续序列长度
            int last=num[0];//上一个数字(连续判断条件)
            int max=1;//前面最大的连续序列长度
            for (int index=1;index<num.length;index++){
                if (num[index]==last+1){
                    last=num[index];
                    count++;
                }else if (num[index]==last){
                    continue;
                }else{
                    last=num[index];
                    count=1;
                }
                max=count>max?count:max;
            }
            return max;
        }
    

    第七个是我,我以为有更好的方法,后来看了一下前面人思路,跟我的差不多.我多次测试发现运行时间也是变化的,所以时间长短应该是机器原因.


    相关文章

      网友评论

          本文标题:最长的连续元素序列的长度

          本文链接:https://www.haomeiwen.com/subject/qiheuhtx.html