/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* reverseKGroup(ListNode* head, int k) { // 虚拟头节点,简化头节点处理 ListNode* dummy = new ListNode(0); dummy->next = head; // pre 记录上一组的尾节点(初始为虚拟头) ListNode* pre = dummy; // end 用于寻找当前组的尾节点 ListNode* end = dummy;
while (end->next != nullptr) { // 检查当前组是否有 k 个节点 for (int i = 0; i < k && end != nullptr; ++i) { end = end->next; } // 若不足 k 个,直接退出 if (end == nullptr) break;