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.”
  • 相关阅读:
    .NET使用ICSharpCode.SharpZipLib压缩/解压文件
    在vs2005中使用AnkhSvn服务端IP改变无法连接
    repeater标签双重循环的使用
    在vs2005中使用SVN进行版本管理
    jmeter--响应断言
    jmeter--十三种断言方式介绍
    jmeter--参数化的四种方法
    jmeter--元件的作用域与执行顺序
    jmeter--使用badboy录制脚本
    jmeter--基本组件介绍
  • 原文地址:https://www.cnblogs.com/Scorpio989/p/4549794.html
Copyright © 2011-2022 走看看