首页 > 试题广场 >

链表中的节点每k个一组翻转

[编程题]链表中的节点每k个一组翻转
  • 热度指数:252329 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表
如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样
你不能更改节点中的值,只能更改节点本身。

数据范围: ,链表中每个元素都满足
要求空间复杂度 ,时间复杂度
例如:
给定的链表是
对于 , 你应该返回
对于 , 你应该返回

示例1

输入

{1,2,3,4,5},2

输出

{2,1,4,3,5}
示例2

输入

{},1

输出

{}

说明:本题目包含复杂数据结构ListNode,点此查看相关信息
头像 牛客题解官
发表于 2022-04-22 11:01:06
精华题解 题目主要信息: 给定一个链表,从头开始每k个作为一组,将每组的链表节点翻转 组与组之间的位置不变 如果最后链表末尾剩余不足k个元素,则不翻转,直接放在最后 举一反三: 学习完本题的思路你可以解决如下题目: BM1.反转链表 BM2.链表内指定区间反转 方法:递归(推荐使用) 思路: 现在我们想一 展开全文
头像 SandMonth
发表于 2021-07-10 17:42:40
精华题解 链表中的节点每k个一组翻转将给出的链表中的节点每k 个一组翻转,返回翻转后的链表如果链表中的节点数不是k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。要求空间复杂度 O(1) 示例输入:{1,2,3,4,5},2返回值:{2,1,4,3,5} 方法一 模拟法 将一 展开全文
头像 未来0116
发表于 2021-07-14 17:31:56
精华题解 一.题目描述NC50链表中的节点每k个一组翻转题目链接:https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e?tpId=196&&tqId=37080&rp=1&ru=/activity/ 展开全文
头像 Maokt
发表于 2021-07-12 15:17:02
精华题解 算法思想一:栈 解题思路: 利用栈的先进后出规则实现链表的翻转 1、首先遍历链表k个结点入栈,若k大于链表的长度则直接返回链表不翻转 2、栈内结点出栈(翻转) 3、判断剩下的链表个数够不够k个(少于k个不需要反转,大于k个重复 1、2步骤) 4、将已翻转的部分与剩 展开全文
头像 IAMLEUNGWEI
发表于 2020-09-29 18:30:22
import java.util.*; public class Solution { public ListNode reverseKGroup (ListNode head, int k) { if(head==null||head.next==null||k==1) r 展开全文
头像 LifelongCode
发表于 2021-01-08 12:28:53
3种解法1. 栈:https://blog.csdn.net/qq_43431171/article/details/1061542512. 模拟:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/solution/tu-jie-kg 展开全文
头像 数据结构和算法
发表于 2021-03-18 23:36:20
1,非递归解决 每k个一组进行反转,如果不够k个就不需要反转,关于链表的反转,不会的可以看下《432,剑指 Offer-反转链表的3种方式》 。最简单的一种方式就是把链表每k个分成一组,然后反转这每一组的节点,接着在把他们串起来即可。 public ListNode reverseKGrou 展开全文
头像 子夜降晴空
发表于 2021-03-11 14:15:16
class Solution { public: ListNode* reverseKGroup(ListNode* head, int k) { if(!head || k <= 1) return head; //空指针及不需要翻转的情况直接返回head 展开全文
头像 小青年201909292117791
发表于 2022-02-24 14:23:48
思路如下: 将链表分成k组反转,首先遍历一遍链表求取链表长度i 判断链表长度i是否大于k值,若大于将这组值进行反转 将i值减去k得到剩余i值,继续判断剩余i的长度是否大于等于k,若大于重复2,否则直接返回链表 # def __init__(self, x): # self 展开全文
头像 Yang760724227
发表于 2022-01-10 19:30:06
* function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * * @param head ListNode类 * @param k int整型 * @return ListNo 展开全文
头像 sdnu_ray
发表于 2022-03-15 09:23:59
* struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 展开全文
头像 淘系前端校招能手
发表于 2020-10-22 10:09:00
每K个一组。可以看成子问题,递归解决。 把问题分成两半,一半是我们要翻转手头上的K个节点,另一半是翻转后面的节点。 假设后面的节点已经翻转完毕,那么只需要把前K个翻转后的尾节点与 另一个半的头结点相连,然后返回当前的头结点,就可以了。 而关键的如何翻转后面的节点,就是递归,看成子问题了。 而翻转K个 展开全文
头像 AimerAimer
发表于 2022-02-05 20:22:39
题意:         将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表         如果链表中的节点数不是 k 展开全文
头像 天上掉下来SCI
发表于 2022-03-25 16:48:17
对于链表,我感觉我悟了。。。 * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直 展开全文

问题信息

难度:
518条回答 25335浏览

热门推荐

通过挑战的用户