来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list-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.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/class Solution {public ListNode reverseBetween(ListNode head, int m, int n) {if (null == head) return null;ListNode cur = head, prev = null;while (m > 1) {prev = cur;cur = cur.next;m--;n--;}ListNode con = prev, tail = cur;ListNode third = null;while (n > 0) {third = cur.next;cur.next = prev;prev = cur;cur = third;n--;}if (con != null) {con.next = prev;} else {head = prev;}tail.next = cur;return head;}}
复杂度分析
- 时间复杂度:
- 空间复杂度:
