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