LeetCode 🟡 2181. Merge Nodes in Between Zeros
🔗 🟡 2181. Merge Nodes in Between Zeros 1333
tags: Weekly Contest 281
鏈結串列(Linked List)
模擬(Simulation)
題意
給定一個 鏈結串列(Linked List) 的第一個節點 ,其中包含一系列以 分隔的整數,且鏈結串列的開頭和結尾都滿足 。
對於相鄰的每兩個 ,將它們之間的所有節點合併為一個節點,其值為所有已合併節點的和。然後將所有 移除,修改後的鏈結串列不應包含任何 。
返回修改後的鏈結串列的頭節點 。
思路:模擬(Simulation)
根據題意,若 Linked List 中有 個節點為 ,則需返回包含 個節點的新 Linked List。
我們可以先將所有 節點保留,並在計算完中間節點的和後,將其保存到 後面 的那個 節點中,然後將前面的 節點連接到後面的 節點,最後去除第一個 節點即可。
具體步驟如下:
- 初始化兩個指標 和 。 用於指向上一次出現值為 的節點, 用於遍歷鏈結串列。
- 由於題目確保第一個節點的值為 ,因此初始化 。
- 指向 的下一個節點 。
- 使用一個變數 來累加兩個 節點之間的節點值,初始化 。
- 遍歷鏈結串列,對於每個節點:
- 如果節點值為 ,表示找到了一段需要合併的區間。此時:
- 將當前節點的值設置為 ,並將 重置為 。
- 將 指向當前節點,以便移除中間的所有節點。
- 將 更新為當前節點。
- 如果節點值不為 ,則累加 。
- 如果節點值為 ,表示找到了一段需要合併的區間。此時:
- 最後返回修改後的鏈結串列的頭節點。注意,初始的第一個 節點不需要,所以返回 。
複雜度分析
- 時間複雜度:, 為鏈結串列的節點數量。
- 空間複雜度:。
1 | class Solution: |
1 | class Solution { |
寫在最後
Cover photo is remixed from @吃肥皂泡泡, thanks for their work!
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 十六個天亮!
評論
WalineGiscus