Files
exercises/lc_127.py
T
2026-07-24 13:46:36 +08:00

43 lines
1.3 KiB
Python

import sys
class Solution:
def __init__(self):
self.number_set: set[int] = set() # 哈希表,全 O(1)
self.longest_length: int = 1
def longestConsecutive(self, nums: list[int]) -> int:
if not nums: return 0
self.number_set = set(nums) # O(n)
for n in self.number_set:
# n = self.number_set.pop()
# print(n, file=sys.stderr)
current_length: int = 1
if n + 1 in self.number_set:
continue
# pointer = n
# while True:
# if pointer + 1 in self.number_set:
# pointer += 1
# current_length += 1
# self.number_set.remove(pointer)
# else:
# break
pointer = n
while True:
if pointer - 1 in self.number_set:
pointer -= 1
current_length += 1
# self.number_set.remove(pointer)
else:
break
self.longest_length = max(current_length, self.longest_length)
return self.longest_length
if __name__ == '__main__':
sol = Solution()
print(sol.longestConsecutive([100, 4, 200, 1, 3, 2]))
print(sol.longestConsecutive([0, 3, 7, 2, 5, 8, 4, 6, 0, 1]))