zoukankan      html  css  js  c++  java
  • 每K个节点翻转

        ListNode* ReverseList(ListNode* head, ListNode* tail)
        {
            ListNode* pre = NULL;
            ListNode* next = NULL;
            while (head != tail)
            {
                next = head->next;
                head->next = pre;
                pre = head;
                head = next;
            }
    
            return pre;
        }
    
        ListNode* reverseKGroup(ListNode* head, int k)
        {
            if (head == NULL || head->next == NULL) 
            {
                return head;
            }
    
            ListNode* tail = head;
            for (int i = 0; i < k; i++) 
            {
                //剩余数量小于k的话,则不需要反转。
                if (tail == NULL)
                {
                    return head;
                }
                tail = tail->next;
            }
    
            // 反转前 k 个元素
            ListNode* newHead = ReverseList(head, tail);
            //下一轮的开始的地方就是tail
            head->next = reverseKGroup(tail, k);
    
            return newHead;
        }
    struct ListNode
    {
        int val;
        struct ListNode *next;
        ListNode(int x):val(x), next(NULL) 
        {
        }
    };
    青青园中葵,朝露待日晞。 阳春布德泽,万物生光辉。 常恐秋节至,焜黄华叶衰。 百川东到海,何时复西归? 少壮不努力,老大徒伤悲!
  • 相关阅读:
    Day3学习笔记
    Day2学习笔记
    Day1学习笔记
    中文标识
    about original idea
    那些和matlab有关的
    GRE Sub math 报名
    虽然实际没有什么用,但是可能会有理论上的意义吧
    latex相关
    对venturelli theorem的重新认识
  • 原文地址:https://www.cnblogs.com/weiyouqing/p/14513621.html
Copyright © 2011-2022 走看看