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个一组逆置。

思路是遍历链表,每遍历到K个就递归,返回值为当前一组的头节点,得到后面逆置的结果后,对本组进行逆置。

K<2和长度不足K的时候特判!

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) 
    {
        if(k<2) return head;  //k<2
        ListNode* p=head;
        int cnt=0;
        while(p!=NULL)
        {
            cnt++;
            if(cnt==k)
            {
                ListNode* q=head->next;
                head->next=reverseKGroup(p->next,k);
                for(int i=1;i<k;i++)
                {
                    ListNode* temp=q->next;
                    q->next=head;
                    head=q;
                    q=temp;
                }
                break;
            }
            p=p->next;
        }
        return cnt==k?p:head; //长度不足K
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

Grunt插件快速开发笔记

最近写了两个Grunt插件(grunt-htmlstamp 和 grunt-file-modify),已经用在自己的项目中,用得很开心。本文便是记录了Grunt...

24170
来自专栏IMWeb前端团队

windows 上优雅的安装 node 和 npm

我一直觉得我掌握的这份优雅是被许多人所知道了,直到我发现小伙伴们都下载 .msi 来装 node ,我心中的优雅感终于压制不住。 .msi 安装 windows...

23370
来自专栏IMWeb前端团队

node.js入门心得

很多前端开发的同学应该都会接触或者了解nodejs,但是经常会听到入门难的抱怨。一方面不知道怎么学习nodejs。另一方面,拿到一些大牛写的nodejs源代码,...

28770
来自专栏IMWeb前端团队

Mock.js前端开发cgi数据模拟工具

1. 什么是Mockjs http://mockjs.com/ ??Mockjs是个能够拦截页面ajax请求并模拟返回数据的小工具,借助Mockjs,前端开发中...

37180
来自专栏IMWeb前端团队

Nativescript跨终端应用程序开发方案研究

1.环境准备 安装nodejs 安装nativescript $npm install -g nativescript 或者下载github上项目代码进行构建(...

30050
来自专栏IMWeb前端团队

Node中没搞明白require和import,你会被坑的很惨

ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是Common...

35680
来自专栏IMWeb前端团队

Nodejs进阶:用debug模块打印调试日志

前言 在node程序开发中时,经常需要打印调试日志。用的比较多的是debug模块,比如express框架中就用到了。下文简单举几个例子进行说明。文中相关代码示例...

35390
来自专栏IMWeb前端团队

Node基础:域名解析DNS(ok)

写在前面 Nodejs学习手册,基础总结之DNS模块。对从事web开发的同学来说,DNS解析再熟悉不过,在nodejs中也有一个模块可以完成dns解析的工作,使...

31660
来自专栏IMWeb前端团队

Nodejs进阶:核心模块net入门与实例讲解

模块概览 net模块是同样是nodejs的核心模块。在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服...

35160
来自专栏IMWeb前端团队

IMWebConf2017讲师系列之狼叔

? 狼叔(Qunar前端架构师) 桑世龙,江湖人送称号「狼叔」,天津空弦科技 CTO,开源项目 Moajs 作者,Node.js 技术传道者。曾就职在新浪、...

22960

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励