html网站地图生成器,留言页面设计模板,上海广告制作公司,wordpress antivirus【玩转校招算法面试】第三天#xff1a;链表中的节点每k个一组翻转#xff08;动画演示、手写 Java 代码、详细注释、LeetCode 高频算法题#xff09;_哔哩哔哩_bilibili 初始状态#xff1a;1 - 2 - 3#xff0c;pre null, cur 1保存当前节点的下一个节点… 【玩转校招算法面试】第三天链表中的节点每k个一组翻转动画演示、手写 Java 代码、详细注释、LeetCode 高频算法题_哔哩哔哩_bilibili 初始状态1 - 2 - 3pre null, cur 1保存当前节点的下一个节点next 2将当前节点指向前一个节点1 - null更新前一个节点和当前节点pre 1, cur 2保存当前节点的下一个节点next 3将当前节点指向前一个节点2 - 1 - null更新前一个节点和当前节点pre 2, cur 3保存当前节点的下一个节点next null将当前节点指向前一个节点3 - 2 - 1 - null for (int i 0; i k; i) {1 2 3 ListNode nxt 2 cur.next; cur.next pre;根据后面2就会指向1 pre cur; 1 cur nxt;2 }
class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {ListNode *dumnew ListNode(-1,head);ListNode *t head;int n 0;while (t ! nullptr) {n;t t-next;}ListNode* enddum;//end用于保存当前待反转部分的头部
ListNode* curdum-next;//cur指向当前节点带反转区域的第一个节点ListNode *prenullptr;// pre指向cur(当前节点)的前一个节点while(nk){//当链表中剩余节点数大于等于 k 时执行循环体内的代码nn-k;//更新剩余节点数。ListNode *p1cur;//记录当前位置for(int i0;ik;i){// 反转k个节点ListNode *nxtcur-next;cur-nextpre;precur;curnxt;}
//pre会变成反转后最后一个节点将上一组反转后的最后一个节点指向当前组反转后的最后一个节点end-nextpre;prenullptr;//重新下一次endp1;此时p1所表示的cur已经反转到了后面p0在下一个开始的前面}end-next cur;//上一组反转后的尾部即 end指向的节点与当前组的头部即 cur 指向的节点连接起来保持整个链表的连续性。return dum-next;}};