湖北建设执业资格注册中心网站,长沙公司网络营销推广,html模板网页,甘肃省建设工程网站92. 反转链表 II
给你单链表的头指针 head 和两个整数 left 和 right #xff0c;其中 left right 。请你反转从位置 left 到位置 right 的链表节点#xff0c;返回 反转后的链表 。 示例 1#xff1a; 输入#xff1a;head [1,2,3,4,5], left 2, right 4
输出其中 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]提示
链表中节点数目为 n1 n 500-500 Node.val 5001 left right n 进阶 你可以使用一趟扫描完成反转吗
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {if(headnull||head.nextnull||leftright){return head;}ListNode dummyNodenew ListNode(-1);dummyNode.nexthead;ListNode predummyNode;for(int i0;ileft-1;i){prepre.next;}ListNode curpre.next;while(leftright){ListNode nextcur.next;cur.nextnext.next;next.nextpre.next;pre.nextnext;}return dummyNode.next;}
}