力扣 旋轉鍊錶

2021-10-09 13:27:53 字數 1512 閱讀 6180

給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。

示例1:

輸入:1-

>2-

>3-

>4-

>5-

>

null

, k =

2輸出:4-

>5-

>1-

>2-

>3-

>

null

解釋:向右旋轉 1 步:5-

>1-

>2-

>3-

>4-

>

null

向右旋轉 2 步:4-

>5-

>1-

>2-

>3-

>

null

示例2:

輸入:0-

>1-

>2-

>

null

, k =

4輸出:2-

>0-

>1-

>

null

解釋:向右旋轉 1 步:2-

>0-

>1-

>

null

向右旋轉 2 步:1-

>2-

>0-

>

null

向右旋轉 3 步:0-

>1-

>2-

>

null

向右旋轉 4 步:2-

>0-

>1-

>

null

思路:

先把鍊錶閉合成環,然後根據k找到節點並截斷,使該節點下乙個節點定義頭指標,然後把此節點指向nullptr。

細節:把鍊錶閉合成環的時候,計算鍊錶的長度賦值為size,k%size計算出k大於size的時候,鍊錶每個節點向右移動的位置數,斷開位置的節點的位置的尋找的方法是,從尾節點開始的第k個位置,所以k=size - k%size。

由於從head開始遍歷,while()迴圈條件判斷為:k>1。

**:

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

k = size-k%size;

end-

>next = head;

end = end-

>next;

while

(k-1

>0)

temp = end-

>next;

end-

>next =

nullptr

;return temp;}}

;

力扣(LeetCode)61 旋轉鍊錶

思路 先計算出head鍊錶的長度 通過觀察,發現題目的意思是從鍊錶的末尾依次取出元素放置鍊錶頭部,那麼這一定是個迴圈 參見示例2 所以在k len的時候可以將k n len,那麼新的k如果和len相等,那就剛好湊成乙個迴圈,直接返回head即可,否則進入迴圈,找到第len k個元素 頭節點為1 設為...

力扣 鍊錶 (21 83 )

這篇部落格持續更新,博主力扣刷題到哪更新到哪。希望大家支援 當l1 l2任意乙個為空 非遞迴解法 class solution listnode cur head listnode pre head listnode check head.next while cur null else if cu...

相交鍊錶 力扣

判斷兩個鍊錶長度,然後求差 times.讓指向較長鍊錶的指標先走times步,然後兩個指標同時向前走,當指向的位址相同的時候返回。1.判斷鍊錶長度 while a 2.讓指標向前走time次 while times 最終 definition for singly linked list.struc...