题目描述:
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
解析:
Java:
public ListNode reverseBetween(ListNode head, int left, int right) { ListNode prev = null; ListNode curr = head; ListNode next = head; for(int i = 1; i < left; i++) { prev = curr; curr = curr.next; } ListNode prev2 = prev; ListNode curr2 = curr; for(int i = left; i <= right; i++) { next = curr.next; curr.next = prev; prev = curr; curr = next; } if(prev2 != null) { prev2.next = prev; } else { head = prev; } curr2.next = curr; return head; }
JavaScript:
var reverseBetween = function(head, left, right) { let prev = null; let curr = head; for(let i = 1; i < left; i++) { prev = curr; curr = curr.next; } let prev2 = prev; let curr2 = curr; for(let i = left; i <= right; i++) { next = curr.next; curr.next = prev; prev = curr; curr = next; } if(prev2 !== null) { prev2.next = prev; } else { head = prev; } curr2.next = curr; return head; };