随笔 - 165,  文章 - 0,  评论 - 4,  阅读 - 18023

题目:

struct ListNode{
    int val;
    ListNode* next;
    ListNode(): val(0), next(nullptr) {}
    ListNode(int _val): val(_val), next(nullptr) {}
    ListNode(int _val, ListNode* _next): val(_val), next(_next) {}
};

class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
        //先判断是否小于k个节点,小于的话直接返回head(递归终止条件)
        ListNode* p = head;
        for(int i = 0; i < k; i++) {
            if(!p) return head;
            p = p->next;
        }
        //翻转链表
        ListNode* cur = head;
        ListNode* pre = nullptr;
        while(cur!=p){
            ListNode* tmp = cur->next;
            cur->next = pre;
            pre = cur;
            cur = tmp;
        }
        //head变成最后一个节点,递归指向下一个链表递归翻转后的头结点
        head->next = reverseKGroup(p, k);
        return pre;
    }
};


作者:凉生
链接:https://leetcode.cn/problems/reverse-nodes-in-k-group/solutions/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted on   孜孜不倦fly  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示