做网站的图片大全,海阳玖网站建设,wix和wordpress,网站域名查ip题目描述
题目链接92. 反转链表 II
给你单链表的头指针 head 和两个整数 left 和 right #xff0c;其中 left right 。请你反转从位置 left 到位置 right 的链表节点#xff0c;返回 反转后的链表 。
示例 1#xff1a; 输入#xff1a;head [1,2,3,4,5], left …题目描述
题目链接92. 反转链表 II
给你单链表的头指针 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]提示
链表中节点数目为 n1 n 500-500 Node.val 5001 left right n
进阶 你可以使用一趟扫描完成反转吗
思路解析 从第left个节点开始反转记录第left个节点start和前一个节点L反转完链表后将反转完成的链表放回原链表中将L节点指向最后一个反转的节点将start节点指向最后一个反转的节点的下一个节点即可。
代码实现
class Solution {
public:ListNode* reverseBetween(ListNode* head, int left, int right) {ListNode*hnew ListNode();//虚头节点h-next head;ListNode*start,*bh,*L;//start记录开始反转的节点b用来遍历链表L记录start的前一个节点for(int i0;ileft;i){L b;b b-next;start b;}ListNode*a L,*c;//反转链表中left到right节点for(int i left;i right;i){c b-next;b-next a;a b;b c;}L-next a;//将反转完成的链表接入原链表中start-next b;return h-next;}
};