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.”
  • 相关阅读:
    Linux学习--------二
    Linux学习--------一
    PHP的回调函数
    妙用PHP函数处理数组
    MySQL错误码大全
    godoc使用方法介绍
    JS处理数据四舍五入(tofixed与round的区别详解)
    laravel手动数组分页
    PhpStorm+Xdebug配置单步调试PHP
    设计函数时,要考虑的因素
  • 原文地址:https://www.cnblogs.com/Scorpio989/p/4549794.html
Copyright © 2011-2022 走看看