题目链接
class Solution:def longestConsecutive(self, nums: List[int]) -> int:# 先排序,然后遍历元素,r+1,然后r在max(temp,r)选择最大的if len(nums)==0:return 0# 先set再排序# my_set=set(nums)# my_list=list(set(nums))myset=sorted(list(set(nums)))r=1temp=1for i in range(0,len(myset)-1):if myset[i]+1==myset[i+1]:r=r+1print(r)else:temp=max(r,temp)r=1return max(temp,r)
set
- set是无顺序且无重复元素的数据结构,无法通过下标访问set里的元素
- 当list变成set后,set不会保留list里元素的位置。
这是因为:集合是使用哈希函数来存储元素的,这个哈希函数会对元素进行处理并将其分配到不同的位置,这就导致了集合中元素的无序性。- set中访问元素:for遍历
- set增加元素:myset.add()
- set删除元素:remove(5)(如果set中没有5会报错)discard(5)(没有5页不会报错)
- 查找元素:if 5 in myset
需要注意的点:
- sort要放在最后,否则list变成set又要打乱顺序
- temp=max(r,temp)这里很难说,就是一直要保存一个最大值