92 反轉鍊錶 II

2021-10-10 07:31:29 字數 1342 閱讀 2948

92. 反轉鍊錶 ii

**:雙指標頭插法

/**

1. definition for singly-linked list.

2. public class listnode

6. }

*/class

solution

for(

int i =

0; i < n - m; i++

)return dummyhead.next;

}}

其他:

為什麼用dummyhead虛擬頭結點

關於leetcode第二題為何返回dummyhead.next(帶圖)

dummyhead虛擬頭結點:dummy head是一種非常有用的技巧,容易寫出bug free的code。本題中如果不用dummy head而直接返回head的話,就會存在要考慮head是否為空的問題,在while迴圈中會出現問題。有了dummyhead, 所有的節點都擁有了前置節點,也就不用再考慮頭結點為空的情況了,這一點在刪除節點是非常有用。返回時返回dummyhead.next,所以也不用儲存頭結點。

如果從第乙個開始反轉,head的指向會發生變化。定義乙個虛擬頭節點,無論head怎麼變,直接返回虛擬頭節點的後繼就行遞迴

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

// 以 head.next 為起點,需要反轉前 n - 1 個節點

listnode last =

reversen

(head.next, n -1)

; head.next.next = head;

// 讓反轉之後的 head 節點和後面的節點連起來

head.next = successor;

return last;

}public listnode reversebetween

(listnode head,

int m,

int n)

// 前進到反轉的起點觸發 base case

head.next =

reversebetween

(head.next, m -

1, n -1)

;return head;

}}

題解參考:

雙指標頭插法

labuladong遞迴反轉鍊錶的一部分

92 反轉鍊錶 II

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4輸出 1 4 3 2 5 null definition for singly linked list.struct listnode class soluti...

92 反轉鍊錶 II

題目描述 反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null 方法1 主要思路 1 直觀的想,找出要反轉的一段的鍊錶的頭乙個結點的前乙個結點,使用頭插法,將該段鍊錶中的結點,...

92 反轉鍊錶 II

92.反轉鍊錶 ii 難度中等425收藏分享切換為英文關注反饋 反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4輸出 1 4 3 2 5 nullpublic static listnode reverseb...