题目:
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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具