-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
92. 反转链表 II #12
Labels
Comments
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @param {number} left
* @param {number} right
* @return {ListNode}
92. 反转链表 II
left = 2 right = 4
定义一个虚拟的头节点
*/
var reverseBetween = function(head, left, right) {
const newNode = new ListNode(-1, head)
let pre = newNode, cur = head
let n = right - left + 1
while(--left) {
pre = pre.next
cur = cur.next
}
while(--n) {
const q = cur.next
cur.next = q.next
q.next = pre.next
pre.next = q
}
return newNode.next
};
|
var reverseBetween = function(head, left, right) {
const dummyNode = new ListNode(-1);
dummyNode.next = head; // 虚拟头节点
let pre = dummyNode;
for (let i = 0; i < left - 1; i++) { // pre遍历到left的前一个节点
pre = pre.next;
}
let rightNode = pre;
for (let i = 0; i < right - left + 1; i++) { // rightNode遍历到right的位置
rightNode = rightNode.next;
}
let leftNode = pre.next; // 保存leftNode
let curr = rightNode.next; // 保存rightNode.next
// 切断left到right的子链
pre.next = null;
rightNode.next = null;
// 反转left到right的子链
reverseLinkedList(leftNode);
// 返乡连接
pre.next = rightNode;
leftNode.next = curr;
return dummyNode.next;
};
const reverseLinkedList = (head) => {
let pre = null;
let cur = head;
while (cur) {
const next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
示例 1:
输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
示例 2:
输入:head = [5], left = 1, right = 1
输出:[5]
提示:
链表中节点数目为 n
1 <= n <= 500
-500 <= Node.val <= 500
1 <= left <= right <= n
The text was updated successfully, but these errors were encountered: