LeetCode 92 反轉鍊錶 II

2021-10-08 00:23:55 字數 900 閱讀 1853

思路:

將鍊錶切為三段,前m - 1個為一段(第一段),第m個到第n個為一段(第二段),剩下的為一段(第三段),將第二段翻轉後與第一段和第三段進行拼接即可。

public listnode reversebetween(listnode head, int m, int n) 

// 創造乙個假的頭節點,防止m等於1時需要特殊處理

listnode dummy = new listnode(0);

dummy.next = head;

listnode prem = dummy;

listnode curn = dummy;

// 找到第m-1個節點

for (int i = 1; i < m; i++)

// 找到第n個節點

for (int i = 1; i <= n; i++)

// 第n+1個節點

listnode aftern = curn.next;

// 斷鏈

curn.next = null;

// 第m個節點

listnode curm = prem.next;

// 斷鏈

prem.next = null;

// 反轉第m個節點到第n個節點之間的鍊錶

reverse(curm, curn);

// 拼接

curm.next = aftern;

prem.next = curn;

return dummy.next;

}private void reverse(listnode start, listnode end)

cur.next = tmp;

}class listnode

}

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