Leetcode打卡 | No.25 k 個一組翻轉連結串列
No.25 k 個一組翻轉連結串列
給出一個連結串列,每 k 個節點一組進行翻轉,並返回翻轉後的連結串列。
k 是一個正整數,它的值小於或等於連結串列的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。
示例 :
給定這個連結串列: 1->2->3->4->5
當 k = 2 時,應當返回: 2->1->4->3->5
當 k = 3 時,應當返回: 3->2->1->4->5
說明 :
● 你的演算法只能使用常數的額外空間。
● 你不能只是單純的改變節點內部的值 ,而是需要實際的進行節點交換。
特意留白一行 ,因為小詹做了兩個多小時 ,還是沒做出來 。。。。。。然後也就不想掙扎了 ,看了別人的程式碼 ,刷題這個東西 ,不能停啊 !不進則退 。
簡單分析下思路 :
● 連結串列長度應該是大於給定值 k 的 ,可以分兩種情況進行處理 。
● 一種是連續 k 個節點做翻轉 ,之後將多個連結串列片段進行整合 。
● 另一種是連結串列結尾多出的幾個節點 ,不夠 k 個節點的那部分保留不做翻轉 。
以下是討論區的程式碼 ,驗證可行 。說實話 ,小詹自己是沒想到 ,小詹自己想到的是相鄰兩個翻轉 ,依次往後 ,但是沒能實現 。。下邊程式碼建議自己假設一個案例復現 ,順著思路走能看懂 ,但是自己寫就是另一回事了 ……手生了哎
原文釋出時間為:2018-09-19
本文來自雲棲社群合作伙伴“ ofollow,noindex">小詹學Python ”,瞭解相關資訊可以關注“ 小詹學Python ”。