题目:
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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。