思路:
將鍊錶切為三段,前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...