给出一个无序的整型列表,找出最长连续元素序列的长度,时间复杂度要求在线性时间内。
例如: 输入:[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中元素的值,也会跟着变化。即利用这个性质,对整型列表中连续序列的元素计数。