Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.

k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.

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

Note:

  • Only constant extra memory is allowed.
  • You may not alter the values in the list's nodes, only nodes itself may be changed.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* reverseKGroup(ListNode* head, int k) {
ListNode* node = head;
//第一个k个
for(int i=0;i<k;i++){
if(!node)
return head;//不到k个长
node = node->next;
}
//node是last的后一个
ListNode* new_head = reverse(head,node);
//关键递归
head->next = reverseKGroup(node,k);
return new_head;
} //翻转链表 1 2 3
ListNode* reverse(ListNode* head,ListNode* last){
//last是翻转链表的后一个节点
ListNode *pre=last, *cur=head;
while(cur != last){
ListNode* Next = cur->next;
cur->next = pre;
pre = cur;
cur = Next;
}
return pre;
}
};

最新文章

  1. C#——字段和属性
  2. MVC5知识点记录
  3. should be mapped with insert=&quot;false&quot; update=&quot;false
  4. 【转】Java内存管理:深入Java内存区域
  5. Mac xcode 编译产生app的路径
  6. SQL Analysis Services MDX 查询超时 解决办法
  7. 使用时间戳引入css、js文件
  8. 在同个类中non-const插入const来减少重复
  9. cf445B DZY Loves Chemistry
  10. MVC 验证码
  11. 开源社交系统ThinkSNS+ V0.8.0 正式发布(一期功能版本)
  12. SUSE Linux Enterprise 11 离线安装 DLIB python机器学习模块
  13. kvm命令总结和虚机器备份迁移
  14. mpvue微信小程序多列选择器用法:实现省份城市选择
  15. vue query或params传参
  16. TortoiseSVN与TortoiseGit
  17. 把本地项目放进新建的仓库(idea)
  18. Beautiful Soup (一)
  19. 如何查看自己电脑系统的安装日期-Window上
  20. HDU 5298 Solid Geometry Homework 暴力

热门文章

  1. Apache Jmeter 性能测试
  2. 基于python常用排序与查找
  3. kafka-伪集群搭建
  4. cve-2020-1472,netlogon特权提升漏洞复现
  5. C# 面试前的准备_基础知识点的回顾_04
  6. Curl可以模拟浏览器
  7. linux 查看nginx的安装路径等信息
  8. ElasticSearch实战系列九: ELK日志系统介绍和安装
  9. 常用的实现Javaweb页面跳转的方式
  10. 实在解决不了丢失vs2019之类的msvcr110.dll之类的问题