示例 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:解答:第一遍遍歷算出鍊錶的長度length. 之後對k進行 k %= lenght(注意k==length的情況), k = length - k; 處理。 之後從鍊錶頭部走k個結點。該結點便為新的頭結點。進行處理即可。輸入: 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
**:
listnode*
rotateright
(listnode* head,
int k)
k %= length;
if( k ==0)
return head;
k = length - k;
p = head;
while
( k--
&& p)
p = p-
>next;
while
( pre-
>next != p)
pre = pre-
>next;
last-
>next = head;
pre-
>next =
null
;return p;
}
執行結果:
每日刷題 奇偶鍊錶
請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null 輸出 1 3 5 2 4 null 示例 2 輸入 2 1 3 5 6 4 7 null 輸出 2 3 6 7 1 5 4 null 解...
每日刷題 反轉鍊錶II
反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null 這道題屬於閱讀理解題。沒有太多複雜的演算法,注意不要斷鏈即可。跟著 走一遍就懂了。definition for singl...
每日刷題 環形鍊錶II
給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 例 1 輸入 head 3,2,0,4 pos 1 ...