zoukankan      html  css  js  c++  java
  • [LeetCode] #25 Reverse Nodes in k-Group

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.

    If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.

    You may not alter the values in the nodes, only nodes itself may be changed.

    Only constant memory is allowed.

    For example,
    Given this linked list: 1->2->3->4->5

    For k = 2, you should return: 2->1->4->3->5

    For k = 3, you should return: 3->2->1->4->5

    每次取k个长度的链表进行反转。时间:30ms

    代码如下:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        bool isKLen(ListNode* head, int k){
            if (k <= 0 || head == NULL)
                return false;
            ListNode *phead = head;
            int count = k - 1;
            while (phead->next != NULL&&count){
                phead = phead->next;
                count--;
            }
            if (count == 0)
                return true;
            else
                return false;
        }
        ListNode* reverseKGroup(ListNode* head, int k) {
            if (head == NULL || k <= 1)
                return head;
            ListNode *p, *q, *phead, *pnext = new ListNode(0);
            pnext->next = p = head;
            phead = pnext;
            while (isKLen(p,k)){
                int count = k-1;
                ListNode *qt = pnext->next;
                while (count--){
                    q = p->next;
                    p->next = q->next;
                    q->next = qt;
                    qt = q;
                }
                pnext->next = qt;
                pnext = p;
                p = p->next;
            }
            return phead->next;
        }
    };
    “If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.”
  • 相关阅读:
    reids 持久化
    center os 下redis安装以及基本使用
    MongoDB安装(Window)
    mysql中文乱码解决办法
    github托管代码
    MySQL表损坏修复【Incorrect key file for table】
    运维杂记-02
    配置ssh秘钥登陆
    nginx解决跨域问题
    运维杂记-01
  • 原文地址:https://www.cnblogs.com/Scorpio989/p/4549794.html
Copyright © 2011-2022 走看看