給定乙個鍊錶,旋轉鍊錶,使得每個節點向右移動k個位置,其中k是乙個非負數
給出鍊錶1->2->3->4->5->null和k=2
返回4->5->1->2->3->null
分析:
首先,遍歷一遍鍊錶得到鍊錶長度len和原鍊錶最後乙個結點pnode。然後k=k%len,如果k為0,表示移動後為本身,直接返回head即可。
以樣例為例子,新煉表頭為原鍊錶倒數第k個結點,即正數第len-k+1個結點,新煉表尾為正數第len-k個結點,通過一次遍歷得到新煉表頭cur和新鍊錶為pre;
最後,pre.next=null; pnode.next=head;return cur;
public listnode rotateright(listnode head, int k) //pnode此時指向最後乙個元素
if(k%len==0) return head;
k=k%len;
//找到倒數第k個結點,即正數第len-k+1個
listnode cur=head;
listnode pre=null;
int index=len-k;
while(index>0) //pre是新鍊錶最後乙個元素,cur是新煉表頭
pre.next=null;
pnode.next=head;
return cur;
}
lintcode 170 旋轉鍊錶
給定乙個鍊錶,旋轉鍊錶,使得每個節點向右移動k個位置,其中k是乙個非負數 給出鍊錶1 2 3 4 5 null和k 2返回4 5 1 2 3 null整體思路是先遍歷一遍鍊錶,求出鍊錶的長度size,隨後size和k進行取餘得到k,取餘的目的是得到需要移動的最小距離。然後我們取倒數第k個節點,並且與...
鍊錶 旋轉鍊錶
力扣原題 definition for singly linked list.public class listnode class solution 計算鍊錶長度 int length 0 listnode cur head while null cur 模擬k輪鍊錶旋轉 for int i 0 ...
LintCode 鍊錶劃分
容易 鍊錶劃分 檢視執行結果 29 通過 給定乙個單鏈表和數值x,劃分鍊錶使得所有小於x的節點排在大於等於x的節點之前。你應該保留兩部分內煉表節點原有的相對順序。您在真實的面試中是否遇到過這個題?yes 樣例 給定鍊錶 1 4 3 2 5 2 null,並且 x 3 返回 1 2 2 4 3 5 n...