返回
求数字最长连续序列——哈希集巧解“最高频”
前端
2024-01-22 18:57:19
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:
输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9
解释:最长数字连续序列是 [0, 1, 2, 3, 4, 5, 6, 7, 8]。它的长度为 9。
提示:
0 <= nums.length <= 105
-109 <= nums[i] <= 109
---
好的,请看下面这份关于_leetcode-128-最长连续序列_的博客文章:
## 哈希集巧解“最高频”
在计算机科学领域,“最高频”问题经常出现,即找出列表或数组中最常出现的元素。解决这类问题,哈希集是一个非常有效的工具,它可以帮助我们快速地查找和统计元素出现的频率。
LeetCode 中的“最长连续序列”问题,也可以通过哈希集来巧妙解决。在哈希集中,我们可以将数组中的每个数字作为键,并将每个数字的连续性作为值。这样,我们就可以快速地查找出哪些数字是连续的,并且可以很容易地计算出最长连续序列的长度。
## Python 实现
```python
def longestConsecutive(nums):
num_set = set(nums)
max_length = 0
for num in num_set:
# 如果当前数字不是连续序列的开头,则跳过
if num - 1 in num_set:
continue
# 找到当前数字连续序列的长度
current_num = num
current_length = 1
while current_num + 1 in num_set:
current_num += 1
current_length += 1
max_length = max(max_length, current_length)
return max_length
nums = [100,4,200,1,3,2]
result = longestConsecutive(nums)
print(result) # 输出:4
nums = [0,3,7,2,5,8,4,6,0,1]
result = longestConsecutive(nums)
print(result) # 输出:9
```
## 算法的复杂度
使用哈希集来解决“最长连续序列”问题,其时间复杂度为 O(n),其中 n 是数组的长度。这是因为哈希集的查找和插入都是 O(1) 的操作。
## 总结
通过哈希集,我们可以巧妙地解决“最高频”问题。在“最长连续序列”问题中,我们可以将哈希集用来存储数组中的数字,并通过查找和统计来快速地计算出最长连续序列的长度。这种方法简单易懂,并且具有良好的性能,非常适合解决此类问题。
我希望这篇文章对您有所帮助!如果您有任何问题或建议,欢迎在评论区留言。