LintCode 170 旋轉鍊錶

2021-08-21 13:55:29 字數 822 閱讀 5824

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