128. Longest Consecutive Sequence
題目網址:https://leetcode.cn/problems/longest-consecutive-sequence/
題意:給一未排序的 array
nums
, 找出數字連續的最長 sequence(sequence 元素不需在nums
中位置連續)。注意:請設計 $O(n)$ time 的演算法
Solution:
想法:將
nums
視覺化發現, 每個 sequence 形成的首要條件就是開頭的數左邊沒有數, 結尾的數右邊沒有數
class Solution { |
- time:$O(n)$ ➔ 雖然有 for loop 和 while loop, 但是每一個數最多被訪問 `2`` 次
- 一次是
for (const auto& num : nums)
- 一次是
if (s.find(num - 1) == s.end())
, 也就是剛好是某數的左邊
- 一次是
- space:$O(n)$ ➔
s
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論