給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。
本題目使用雙指標演算法即可。定義兩個指標 first 和 second,首先令 first 指向第 n 個結點。然後初始化 second 指向頭結點,而後 first 、second 指標依次向後移動,當 first 指向最後乙個結點時,first 就指向倒數第 n + 1 個結點了。此時調整指標指向,便實現了旋轉鍊錶。
本題目有個坑就是 k 可能大於元素個數。
listnode* rotateright(listnode* head, int k)
if(count == 0)
k = k % count; // 如果 k 等於元素個數,旋轉後鍊錶等於原鍊錶
first = phead;
while(k--)
while(first->next)
// 調整指標位置,有點繞
first->next = phead->next;
phead->next = second->next;
second->next = null;
return phead->next;
}
leetcode 61 旋轉鍊錶
deciription 給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 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示例 ...
LeetCode61 旋轉鍊錶
很久沒有寫blog了,以至於很長一段時間我都忘記了我還有乙個csdn賬號。也就是每週參加以下leetcode周競賽,膜拜一下大佬,然後發現自己真的是蠢以及一無是處,想的辦法總是,非常蠢。一般就做簡單的題目,這道題是leetcode估計實在是看不下去了,給我email說邀請我做個演算法題,我看了一下,...
LeetCode 61 旋轉鍊錶
問題描述 給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 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...