题目

类型:Linked List

难度:中等

反转链表 - 图1

解题思路

在需要反转的区间里,每遍历到一个节点,让这个新节点来到反转部分的起始位置。

https://leetcode-cn.com/problems/reverse-linked-list-ii/solution/fan-zhuan-lian-biao-ii-by-leetcode-solut-teyq/

代码

  1. class Solution {
  2. public ListNode reverseBetween(ListNode head, int left, int right) {
  3. // 设置 dummyNode 是这一类问题的一般做法
  4. ListNode dummyNode = new ListNode(-1);
  5. dummyNode.next = head;
  6. ListNode pre = dummyNode;
  7. for (int i = 0; i < left - 1; i++) {
  8. pre = pre.next;
  9. }
  10. ListNode cur = pre.next;
  11. ListNode next;
  12. for (int i = 0; i < right - left; i++) {
  13. next = cur.next;
  14. cur.next = next.next;
  15. next.next = pre.next;
  16. pre.next = next;
  17. }
  18. return dummyNode.next;
  19. }
  20. }