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