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