給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 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...