【LeetCode笔记】128. 最长连续序列(Java、哈希表、动态规划)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode笔记】128. 最长连续序列(Java、哈希表、动态规划)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目描述
- 思路 & 代碼
- 變式題:返回答案數組
- 更新
可惡。。居然碰到了周一面試沒撕出最優復雜度的題
題目描述
- 難點在于時間復雜度O(n),否則來個sort()還是很輕松的
思路 & 代碼
- 一般來說,時間復雜度可以用空間復雜度來彌補:來選個數據結構吧!
- 顯而易見,哈希表!K - V :數組元素 - 以該元素為端點的序列的最長值
- 狀態轉移方程:now = left + right + 1
- 最優子結構:left & right
- put(i ,now) 只是為了 containsKey() 判斷,狀態轉移還得看端點。
變式題:返回答案數組
- 維護一個index,隨著ans更新而更新 index = i - left,最后按照 index & ans 創造新數組即可
更新
- 經典空間換時間!注意 temp 也要 put 進去,因為 containsKey 要用!
總結
以上是生活随笔為你收集整理的【LeetCode笔记】128. 最长连续序列(Java、哈希表、动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【总结记录】《MySQL必知必会》读后笔
- 下一篇: 【LeetCode笔记】78. 子集(J