当前位置: 首页> 教育> 锐评 > 图书宣传推广方案_美图秀秀在线制作图片_搜客_今日最新足球推荐

图书宣传推广方案_美图秀秀在线制作图片_搜客_今日最新足球推荐

时间:2025/7/9 16:54:07来源:https://blog.csdn.net/weixin_42333261/article/details/142487381 浏览次数:0次
图书宣传推广方案_美图秀秀在线制作图片_搜客_今日最新足球推荐

一、问题

'''
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]
输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9
'''

二、思路

定义函数:首先定义了一个名为 longestConsecutive 的函数,它接受一个整数数组 nums 作为输入参数。初始化集合:使用 Python 的集合类型(set)创建一个名为 elements 的集合,并将输入数组 nums 中的所有元素添加到这个集合中。这样做的目的是为了能够在 O(1) 的时间内检查一个数字是否在数组中。初始化变量:定义一个名为 longest_streak 的变量,用于保存找到的最长连续序列的长度。初始值设为0。遍历数组:使用一个 for 循环遍历输入数组 nums 中的每个数字 num。检查起始点:对于每个数字 num,首先检查它前面的数字 num - 1 是否在集合 elements 中。如果不在,那么 num 可能是某个连续序列的起始点。寻找连续序列:如果 num 是起始点,则从这个数字开始,向后查找连续的数字。使用一个 while 循环,每次检查当前数字 current_num 加 1 是否在集合 elements 中。如果在,说明这个数字也是连续序列的一部分,于是将 current_num 加 1,并将当前序列的长度 current_streak 加 1。这个过程一直持续到不能再找到连续的数字为止。更新最长序列长度:在每次查找后,比较当前序列的长度 current_streak 与已知的最长序列长度 longest_streak。如果 current_streak 更长,则更新 longest_streak 的值。返回结果:遍历完所有数字后,返回 longest_streak,即为找到的最长的数字连续序列的长度。

三、解法

写法1

#自己写的class Solution:def longestConsecutive(self,nums:list[int]):elements = set(nums)longest_streak = 0for num in nums:x = num - 1if x not in nums:y = num + 1current_streak =0while y in nums:current_streak += 1 #缺少了一个y+=1if longest_streak < current_streak:longest_streak = current_streakreturn longest_streak

写法2

class Solution:def longestConsecutive(self, nums: list[int]):elements = set(nums)longest_streak = 0for num in nums:x = num - 1if x not in elements:y = num + 1current_streak = 1while y in elements:current_streak += 1y += 1if longest_streak < current_streak:longest_streak = current_streakreturn longest_streak

 

四、学习汇总:

set(),是集合类型。set(nums)是把nums列表转化为集合类型是数据

关键字:图书宣传推广方案_美图秀秀在线制作图片_搜客_今日最新足球推荐

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: