leetcode 92 反轉鍊錶 II(遞迴做法)

2021-10-22 21:46:45 字數 1032 閱讀 3410

class

solution

last =

reversen

(head.next,n-1)

; head.next.next=head;

head.next=temp;

return last;

}// 當left=1時,相當於反轉鍊錶的前n個結點

public listnode reversebetween

(listnode head,

int left,

int right)

else

return head;

}}

這道題要反轉從位置 left 到位置 right 的鍊錶節點,可以先寫乙個reversen(listnode head,int n)函式用於反轉鍊錶的前n個結點,返回反轉後的頭結點last。

reversebetween(listnode head, int left, int right)函式中分兩種情況:

left=1時:

相當於反轉鍊錶的前n個結點

left不等於1時:

可以轉化為left=1時的情況。遞迴進入reversebetween這個函式,直到進入left=1這個base case就會停止遞迴。

具體就是這行**:

head.next=

reversebetween

(head.next,left-

1,right-1)

;

例如

輸入:head = [1,2,3,4,5], left = 2, right = 4

會遞迴進入reversebetween反轉[2,3,4,5],left=1,right=3,得到[4,3,2,5]的頭結點4

此時讓原來的頭結點1連線上反轉後的4就行了

最後輸出[1,4,3,2,5]

leetcode 92反轉鍊錶

反轉從位置 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.public class listnode class...

LeetCode 92 反轉鍊錶 II

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

leetcode92 反轉鍊錶 II

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4輸出 1 4 3 2 5 null思路 先往後遍歷找到需要反轉的節點作為起點 count m 然後按照劍指offer 反轉鍊錶 的思路,設定curr,pre,p...