演算法題 rotate list 旋轉旋轉

2021-08-20 15:03:08 字數 917 閱讀 1034

[程式設計題]rotate-list

時間限制:1秒 空間限制:32768k

given a list, rotate the list to the right by k places,

where k is non-negative.

for example:

given1->2->3->4->5->nulland k =2,

return4->5->1->2->3->null.

題目;給定乙個鍊錶,將鍊錶旋轉到右邊的k個位置,其中k是非負的。

例如:

1->2->3->4->5->null,為k = 2,

返還4->5->1->2->3->null。

思路:同之前做過的很多鍊錶題一樣,先遍歷一遍,為的是得出鍊錶長度length,注意k可能會大於len,因此k%=length。

將尾結點next指標指向首節點,形成乙個環,接著往後跑len-k步,然後再從這裡斷開,很巧妙地完成了旋轉的過程

/**

* definition for singly-linked list.

* struct listnode

* };

*/

class solution 

k=length - k % length;//計算位置,模除是因為考慮到k>length的情況

pword->next=phead;//首尾相接成環

int step=0;

for(step;stepnext;//接著往後跑

}phead=pword->next;//位置的下乙個節點做為新的首節點

pword->next=null;//最後再斷開

return phead;

}};

rotate list(旋轉鍊錶)

題目描述 given a list,rotate the list to the right by k places,where k is non negative.給定乙個鍊錶,將鍊錶向右旋轉k個位置,其中k是非負的。for example given1 2 3 4 5 nulland k 2,r...

rotate list 旋轉部分鍊錶

given a list,rotate the list to the right by k places,where k is non negative.for example given1 2 3 4 5 nulland k 2,return4 5 1 2 3 null.題目 給定乙個鍊錶,將鍊...

演算法題 旋轉陣列

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排序的陣列的乙個旋轉 遞增或遞減的 輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排序的陣列的乙個旋轉 遞增或遞減的 輸出旋轉...