示例 1:輸入:head = [1,2,3,4,5], k = 2
輸出:[2,1,4,3,5]
示例 2:輸入:head = [1,2,3,4,5], k = 3
輸出:[3,2,1,4,5]
示例 3:輸入:head = [1,2,3,4,5], k = 1
輸出:[1,2,3,4,5]
示例 4:輸入:head = [1], k = 1
輸出:[1]
(ps:還是加上title吧不然太難受了)
題目分析首先實現翻轉鍊錶的方法此題用『遞迴-回溯』的方法比較簡單,需要注意的一點是在『遞迴-回溯』結束時返回的節點為之前的頭節點,所以注意預處理區域性鍊錶的頭尾指標,並且在一組結束的時候對下一組的頭尾指標進行預處理。分組鍊錶
初始化頭尾指標
指標移動記位,當長度為一組進行反轉
鍊錶之間的鏈結處理
反轉後初始化頭尾指標
總結。2345迴圈執行
執行耗時:0 ms,擊敗了100.00% 的j**a使用者鍊錶反轉記憶體消耗:41.4 mb,擊敗了5.10% 的j**a使用者
private listnode swapgroup(listnode head,int k)
listnode next = swapgroup(head.next,k - 1);
head.next = null;
next.next = head;
return head;
}
分組處理鍊錶
public listnode reversekgroup(listnode head, int k)
if(pointer_fast==null)break;
pointer_fast = pointer_fast.next;
size++;
}return header.next;
}
leetcode25 k組翻轉鍊錶
這題可以參考206的答案,事實上,我直接把翻轉部分的 用了leetcode206官方題解上面的,只是做了一點小修改,以保證是前k個反轉 我們具體分析核心函式 reversekgroup 乙個關鍵是怎麼把這個問題分解成好幾個單獨的翻轉問題,我這裡的reverselist函式做了改動,只反轉前面k個節點...
LeetCode 25 k個一組翻轉鍊錶
給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1 4 5 這...
LeetCode 25 K個一組翻轉鍊錶
按照每k個為一組,記錄這組內的頭和尾,第一組只需記錄翻轉後的尾即tail 接下來的每一組記錄翻轉後頭 nhead 和尾 ntail.注意更新的順序 class solution length k if length 0 return head p head listnode otail head l...