leetcode25 k組翻轉鍊錶

2021-09-26 09:31:27 字數 858 閱讀 7645

這題可以參考206的答案,事實上,我直接把翻轉部分的**用了leetcode206官方題解上面的,只是做了一點小修改,以保證是前k個反轉;

我們具體分析核心函式 reversekgroup;

乙個關鍵是怎麼把這個問題分解成好幾個單獨的翻轉問題,我這裡的reverselist函式做了改動,只反轉前面k個節點,注意這個函式返回的是頭結點,比如我反轉 1->2->3 得到3->2->1,返回的是3這個節點,而1的下乙個節點為null,所以我們每次都必須儲存第k+1個節點,並把1的下乙個節點賦值為遞迴處理的從第k+1個節點反轉的結果;

這是乙個遞迴的問題,我們反轉1-2-3-4-5-6-7,可以想象,我們翻轉了1-2-3,然後子問題4-5-6-7

即1-2-3-4-5-6-7;k=3;

我們第一輪反轉1-2-3,並記錄第k+1個節點,即4;

反轉得到3-2-1,我們把1和剩下的節點反轉得到的結果頭結點連線起來,得到3-2-1

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

if(count!=k) //如果剩餘的節點數小於k個,就不需要再處理了

return head;

else

}public listnode reverselist(listnode head,int k)

return prev;} }

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...

leetcode 25 k個一組翻轉鍊錶

題目描述 給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2...