每日刷題 旋轉鍊錶

2021-09-30 18:40:02 字數 1100 閱讀 8822

示例 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->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

解答:第一遍遍歷算出鍊錶的長度length. 之後對k進行 k %= lenght(注意k==length的情況), k = length - k; 處理。 之後從鍊錶頭部走k個結點。該結點便為新的頭結點。進行處理即可。

**:

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 ...