网站建设多少钱 小江网页设计,生鲜做的好的网站,企业营销网站建设公司哪家好,怎么在工商局网站做股东变更题目链接
力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 创建一个哨兵位头结点#xff0c;然后将其链接在原来头结点的前边#xff0c;以便于我们后面的便利使用。 每次翻转一小段之前首先判断一下接下里我们要翻转的这一小段的长度是否…题目链接
力扣LeetCode官网 - 全球极客挚爱的技术成长平台 题目解析 创建一个哨兵位头结点然后将其链接在原来头结点的前边以便于我们后面的便利使用。 每次翻转一小段之前首先判断一下接下里我们要翻转的这一小段的长度是否符合条件若不符合直接返回头结点。 若符合则仿照反转链表的方式(头插法)来进行一小段一小段的反转链表。 代码
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution
{
public:ListNode* reverseKGroup(ListNode* head, int k) {// 首先创建一个带头的结点ListNode* hairnew ListNode(0);// 将该结点指向原头结点hair-nexthead;ListNode* prevhair;while(true){// 若此时剩下的结点数小于k则直接返回即可ListNode* lastprev;for(int i0;ik;i){lastlast-next;if(lastnullptr) return hair-next;}// 仿照反转链表的方式进行头插法的反转链表ListNode* curprev-next;ListNode* next;for(int i0;ik-1;i){// 保存cur的next结点防止一会儿丢失nextcur-next;cur-nextnext-next;next-nextprev-next;prev-nextnext;}// 更新prev结点prevcur;}}
};