前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最长的连续元素序列的长度

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

作者头像
名字是乱打的
发布2021-12-22 16:11:29
6490
发布2021-12-22 16:11:29
举报
文章被收录于专栏:软件工程软件工程
题目描述

给定一个无序的整数类型数组,求最长的连续元素序列的长度。 例如: 给出的数组为[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,算连续三个,我算成连续四个了,后来改掉了

代码:

代码语言:javascript
复制
 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;
    }

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/3/28 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路:
  • 代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档