题目描述:
给你单链表的头指针 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;
};
京公网安备 11010502036488号