LeetCode25 Reverse Nodes in k-Group

时间:2022-09-08 08:52:09

题意:

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 (Hard)

分析:

题目意思是每k个链表进行翻转,不足k个保持不变。

可以写一个翻转k个节点的辅助函数,然后在原函数中判断后续是否有k个节点,以及后续节点位置。

注意事项见代码注释。

代码:

 class Solution {
private:
ListNode* reverseKelement(ListNode* head, int k) {
ListNode* result = nullptr;
for (int i = ; i < k; ++i) {
ListNode* temp = head -> next;
head -> next = result;
result = head;
head = temp;
}
return result;
}
public:
ListNode* reverseKGroup(ListNode* head, int k) {
if (head == nullptr) {
return head;
}
ListNode dummy();
dummy.next = head;
head = &dummy; ListNode* runner = head -> next;
int flag = ;
for (int i = ; i < k; ++i) {
if (runner -> next != nullptr || (runner -> next == nullptr && k == i + ) ) { //恰好k个到结尾情况没考虑, 例如[1,2] 2情况
runner = runner -> next;
}
else {
flag = ;
break;
}
}
while (flag == ) {
ListNode* temp1 = head -> next;
head -> next = reverseKelement(temp1, k);
temp1 -> next = runner;
head = temp1;
for (int i = ; i < k; ++i) {
if (runner != nullptr && (runner -> next != nullptr || (runner -> next == nullptr && k == i + )) ) { //对应添加runner != nullptr
runner = runner -> next;
}
else {
flag = ;
break;
}
}
}
return dummy.next;
}
};
 

LeetCode25 Reverse Nodes in k-Group的更多相关文章

  1. &lbrack;Leetcode&rsqb; Reverse nodes in k group 每k个一组反转链表

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

  2. Reverse Nodes In K Group,将链表每k个元素为一组进行反转---特例Swap Nodes in Pairs,成对儿反转

    问题描述:1->2->3->4,假设k=2进行反转,得到2->1->4->3:k=3进行反转,得到3->2->1->4 算法思想:基本操作就是链表 ...

  3. 【Reverse Nodes in k-Group】cpp

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

  4. &lbrack;LintCode&rsqb; Reverse Nodes in k-Group 每k个一组翻转链表

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

  5. Leetcode 25&period; Reverse Nodes in k-Group 以每组k个结点进行链表反转&lpar;链表&rpar;

    Leetcode 25. Reverse Nodes in k-Group 以每组k个结点进行链表反转(链表) 题目描述 已知一个链表,每次对k个节点进行反转,最后返回反转后的链表 测试样例 Inpu ...

  6. 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划分 ...

  7. LeetCode 笔记系列六 Reverse Nodes in k-Group &lbrack;学习如何逆转一个单链表&rsqb;

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

  8. LeetCode&colon; Reverse Nodes in k-Group 解题报告

    Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked list k at a time and ret ...

  9. 25&period;Reverse Nodes in k-Group &lpar;List&rpar;

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

随机推荐

  1. Python的平凡之路(14)

    一.什么是HTML HTML(Hyper Text Mark-up Language ) 即超文本标记语言,是 WWW 的描述语言,由 Tim Berners-lee提出.设计 HTML 语言的目的是 ...

  2. 【洛谷&&num;183&semi;P2320】鬼谷子的钱袋

    这道题很神奇 我们举一个例子,m=12 那么我们可以把它分成两部分,L和R: (1,2,,6)(7,8,,12) 我们可以发现R中的数都可以由12/2和左边的数组合得到 那么我们对L再分------ ...

  3. vueJS简单的点击显示与隐藏的效果

    目前前端框架太多,接触过angular.ember,现在开始倒腾vue 此处用到v-if.v-else.v-show,v-if或让元素不在DOM上,v-show只是改变display:block属性, ...

  4. 菜鸟学习笔记3——jQuery 选择器

    jQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") ...

  5. Python之路【第十篇】:HTML -暂无等待更新

    Python之路[第十篇]:HTML -暂无等待更新

  6. 初次接触VC&plus;&plus;载入自己定义LIB 即静态链接

    分为两部分 第一部分  LIBproject 用来生成LIB文件 #ifndef _myfun #define _myfun int myfun(int x,int y) { return x+y; ...

  7. 第3阶段——内核启动分析之prepare&lowbar;namespace&lpar;&rpar;如何挂载根文件系统和mtd分区介绍&lpar;6&rpar;

    内核启动并初始化后,最终目的是像Windows一样能启动应用程序,在windows中每个应用程序都存在C盘.D盘等,而linux中每个应用程序是存放在根文件系统里面,那么挂载根文件系统在哪里,怎么实现 ...

  8. uwp 动画Storyboard

    代码如下: <Page.Resources>        <Storyboard x:Name="storyboard">            < ...

  9. ActiveMQ应用&lpar;1&rpar;-安装及示例

    简介: Apache ActiveMQ ™ 是最流行最强大的开源消息及继承模式服务器.i Apache ActiveMQ 速度快,支持多种语言的客户端及代理,可便捷的使用企业集成模式,完整支持JMS1 ...

  10. Python中read&lpar;&rpar;、readline&lpar;&rpar;和readlines&lpar;&rpar;三者间的区别和用法

    2019-01-15 10:48:43 前言 众所周知在python中读取文件常用的三种方法:read(),readline(),readlines(),今天看项目是又忘记他们的区别了.以前看书的时候 ...