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.”
  • 相关阅读:
    80211-pcap包类型有3种link type
    node搭建多人博客
    mac快捷键
    阿里云搭建svn
    linux 常用命令
    node 日志
    启动tomcat
    kill redis
    利用新浪接口获取客户端ip
    网站loading的几种实现方法
  • 原文地址:https://www.cnblogs.com/Scorpio989/p/4549794.html
Copyright © 2011-2022 走看看