2
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
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]))
|
||||
Reference in New Issue
Block a user