LeetCode热题100之第三题
3. 最长连续序列
类型:中等
题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例:
这道题我是根据B站:华南溜达虎的视频教学求解出来的,这里感谢一下华南溜达虎大师,嗯嗯,投币、收藏、关注已奉上!!
下面是具体的视频教学链接,讲的真的挺好,通俗易懂,感兴趣的同学或朋友可以看看。
视频链接(请点击!)
好了,下面说一下他讲解的思路,嗯,学到手里的就是自己的了!!
解题思路:
先不管这个最长序列怎么求,这道题的重点在于如何确定一个序列。就用题目中所给的nums数组为例,nums = [100, 4, 200,1, 3, 2] ,很明显数组中有6个元素。首先看看过程是怎么样的:
对于100这个数据元素,如何判断它的序列呢?首先我们要确定它是不是一个序列的起始点,即是不是序列中最左边的那一个数。怎么判断,就从原始数组中寻找有没有100-1=99,这个元素,如果没有说明100就是一个序列的起始点,然后就开始从100之后开始寻找有没有100+1=101呢?也没有说明100这个元素的最长连续序列就是1,同理分析剩余5个元素,分析过程如下:
4:数组中有3,说明不是起始点,不用管
200:数组中没有199,说明是一个序列的起始点,要从200之后开始寻找,有没有201,没有则长度为1 java循环基础理论题
1:数组中没有0,说明是起始点,从1之后开始寻找,有2,有3,有4,没有5,即最大序列长度是:1 2 3 4,即为4
3:数组中有2,说明不是起始点,不用管
2:数组中有1,不是起始点,不用管
下面是具体的Java程序:
下面可爱的图片只用于装饰网站,不用于任何商业活动!!!
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/20168.html