""" 连续序列 给定一个未排序的整数数组,找出最长的连续数字序列。 其中,不需要序列在原数组中是连续的。 """ 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]))
评论前必须登录!
注册