题解 | #牛群的重新分组#

牛群的重新分组

https://www.nowcoder.com/practice/267c0deb9a6a41e4bdeb1b2addc64c93

class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
        //找到每次翻转的尾部
        ListNode* tail = head; 
        //遍历k次到尾部
        for(int i = 0; i < k; i++){ 
            //如果不足k到了链表尾,直接返回,不翻转
            if(tail == NULL) 
                return head;
            tail = tail->next; 
        }
        //翻转时需要的前序和当前节点
        ListNode* pre = NULL; 
        ListNode* cur = head;
        //在到达当前段尾节点前
        while(cur != tail){ 
            //翻转
            ListNode* temp = cur->next; 
            cur->next = pre;
            pre = cur;
            cur = temp;
        }
        //当前尾指向下一段要翻转的链表
        head->next = reverseKGroup(tail, k); 
        return pre;
    }
};

虚数五行区解题中心 文章被收录于专栏

非淡泊无以明志,非宁静无以致远

全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务