Python3学习笔记:给出一个无序的整型列表,找出最长连续元素序列的长度,时间复杂度要求在线性时间内

博客介绍了如何在Python3中找出无序整型列表的最长连续元素序列长度,要求时间复杂度为线性。提供两种方法,包括利用Python的引用特性和通过集合进行哈希操作。方法二被认为是更简洁且效率更高的解决方案。
摘要由CSDN通过智能技术生成

给出一个无序的整型列表,找出最长连续元素序列的长度,时间复杂度要求在线性时间内。

例如: 输入:[8,1,9,3,2,4],那么其最长连续序列是[1,2,3,4],即输出长度为4

问题简单,但是要考虑时间复杂度为O(n),比较复杂一些。

方法一

根据python中的特有的赋值思想——引用,进行求值。

a = [0]
b = a
c = [0]
print(id(a), id(b), id(c))

b[0]=b[0] + 1   # 更改b中元素值的大小
print(a, b, c)


# 输出结果
91202888 91202888 55680584      # a,b 变量指向的地址相同。
[1] [1] [0]                     # a,b 发生变化,c 未变

上述a,b变量指向同一个地址的对象,c则指向另一个地址;
更改b中的元素的值,a中元素的值,也会跟着变化。即利用这个性质,对整型列表中连续序列的元素计数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值