"""
连续序列
给定一个未排序的整数数组,找出最长的连续数字序列。
其中,不需要序列在原数组中是连续的。
"""
def longest_consecutive_sequence(numbers):
"""
找出给定数字列表中最长的连续序列。
:param numbers: 一个整数列表
:return: 最长的连续序列列表
"""
# 初始化最长序列为空列表
longest = []
# 将数字列表转换为集合,以便快速查找
number_set = set(numbers)
# 遍历集合中的每个数字
for number in number_set:
# 检查当前数字是否是序列的起点(即它前面的数字不存在于集合中)
if number - 1 not in number_set:
# 初始化当前序列的起点和当前最长序列
current_number = number
current_longest = [number]
# 当当前数字的下一个数字存在于集合中时,继续扩展当前序列
while current_number + 1 in number_set:
current_number += 1
current_longest.append(current_number)
# 更新最长序列
if len(current_longest) > len(longest):
longest = current_longest
return longest
if __name__ == '__main__':
# 测试函数
print(longest_consecutive_sequence([77, 33, 66, 88, 55, 99, 0, 100, 4, 200, 1, 3, 2]))
评论前必须登录!
注册