1. 题目

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

2. 思路

递归。
找到前K个,进行逆序。
对后面的进行递归,然后将前面链接到递归的返回结果上去。

3. 代码

耗时:19ms

/*** 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 (head == NULL || k <= 1) { return head; }ListNode* pl = head; // this K segment's last nodeint s = k - 1;while (s > 0 && pl != NULL) {pl = pl->next;s--;}if (pl == NULL) {return head;}ListNode* p2 = reverseKGroup(pl->next, k);reverse(head, pl);head->next = p2;return pl;}// reverse pf->...->pl, return end point pfListNode* reverse(ListNode* pf, ListNode* pl) {if (pf == NULL || pl == NULL) { return NULL; }if (pf == pl) return pf;ListNode* p = reverse(pf->next, pl);p->next = pf;pf->next = NULL;return pf;}
};

【leetcode】25. Reverse Nodes in k-Group 链表按K分段逆序相关推荐

  1. 【重点】LeetCode 25. Reverse Nodes in k-Group

    LeetCode 25. Reverse Nodes in k-Group 博客转载自:http://www.cnblogs.com/grandyang/p/4441324.html Solution ...

  2. LeetCode - 25. Reverse Nodes in k-Group

    25. Reverse Nodes in k-Group Problem's Link -------------------------------------------------------- ...

  3. leetcode 25. Reverse Nodes in k-Group | 25. K 个一组翻转链表(Java)

    题目 https://leetcode.com/problems/reverse-nodes-in-k-group/ 题解 乍一看以为很容易:每 k 个节点翻转,若剩余不足 k 个,则不变.没有什么技 ...

  4. LeetCode 25 Reverse Nodes in k-Group Add to List (划分list为k组)

    题目链接: https://leetcode.com/problems/reverse-nodes-in-k-group/?tab=Description Problem :将一个有序list划分为k ...

  5. 数据结构_Java_基于 线性表-单链表的初始化、逆序、去重、非递减序列的合并(开辟新链表先整体插入一个链表全部元素,再遍历另外一个链表寻找合适位置插入 、开辟新链表实现舍弃原链表)等操作实现

    写在前面 不久前学习了数据结构线性表-数组-链表的相关知识,用C/C++语言实现了 单链表的系列相关操作 .见往期博客: 数据结构实验2_C语言_基于顺序表的非递减有序表的合并.线性表元素的增.删.改 ...

  6. C++-算法(80)-单链表与双链表的反转(逆序)

    链表反转或者叫逆序是常用操作,网上有很多图文共有的说明文章,方法也多种多样.    其实我的理解,单链表赋值是对node->next 而非node ,而双向链表是对 node->last ...

  7. LeetCode Reverse Nodes in k-Group(单链表连续分段反转)

    题意:给出一个单链表及反转元素的个数,求反转后的单链表 思路:首先确定链表总结点数,根据反转元素的个数,可以知道要反转多少次.第一次反转的尾为新的单链表的头,而后序反转后的头变成前一次反转后发尾部元素 ...

  8. 25. Reverse Nodes in k-Group

    https://leetcode.com/problems/reverse-nodes-in-k-group/description/ 题意:给一个链表和一个正数k,将链表划分成多个长度为k的链,将这 ...

  9. 每天一道LeetCode-----将链表每k个节点逆序一次

    Swap Nodes in Pairs 原题链接 Swap Nodes in Pairs 意思是将链表每两个节点互换位置,要求不能直接改变链表的值,只能改变next指针的方式交换 其实就是遍历一遍每两 ...

最新文章

  1. 将一个PPT文档按页分割成多个PPT文档的代码
  2. php 自动测试,PHP自动化测试
  3. 怎么控制latex插图的位置_如何在报告OR论文中画出漂亮的插图?
  4. VTK:可视化算法之CutWithScalars
  5. 一段树状无限制级代码
  6. 3701汉化包 axure r9_Axure RP 9.0.0.3701 for Mac 中文共享版 – 知名的产品原型设计软件...
  7. 解决 Win11 开机ctfmon.exe不能自启
  8. 桌面计算机图标带虚线框,桌面图标出现虚线框,win10桌面图标带有虚线方框
  9. win10如何搜索计算机网络ip,win10怎样查看电脑IP地址?,看完就明白了
  10. FLUKE OTDR光纤测试仪OFP2-100-Q双光纤双向测试的方法
  11. 微信二维码扫一扫打开手机外部浏览器打开指定HTML网页
  12. 剪映专业版 for Mac(视频剪辑工具)
  13. 每日一例,练就编程高手
  14. Python编程之md5加密和sha1加密
  15. 机器学习在无线信道建模中的应用现状与展望
  16. Es6类数组length属性和扩展方法,find(),findIndex(),fill(),copyWithin(),entries()...用法
  17. 一文读懂命名实体识别
  18. CSK6开发分享2-视觉开发套件驱屏魔改篇
  19. java 数据结构 无向图_Java数据结构和算法(十五)——无权无向图
  20. office word由于宏安全,不能打开宏

热门文章

  1. 极度偷懒 - 实现算命程序中tabcontrol的“美化”
  2. SCCM SP 1中文版安装前需要更新的内容-Part1
  3. 一种新的页面导航方法
  4. 奇怪,勒索软件Ryuk 新版本把这些 *UNIX 文件夹列入了黑名单
  5. 新疆哈巴河冰雪旅游节开幕 游人沉醉雪舞冰封“第一桦”
  6. 位于地下88米,一晚6000块,上海这家酒店房间内竟还有玄机!
  7. Linux命令之awk:高级输入输出(四)
  8. 优秀的程序员都应当知道的11个警句
  9. Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间取摸
  10. ZH奶酪:PHP遍历目录/文件的3种方法