LeetCode #25 - Reverse Nodes in k-Group

算法题——链表中的节点每k个一组翻转 1. 本题知识点 链表 2. 题目描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 进阶: 你可以设计一个只使用常数额外空间的算法来解决此问题吗? 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。 输入:head = [1,2,3,4,5], k = 2 输出:[2,1,4,3,5] 输入:head = [1,2,3,4,5], k = 3 输出:[3 阅读详情

题目描述:

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.

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


这道题和之前的reverse linked list类似,但是这道题要难很多。这道题可以用递归来解,需要先在链表中确定一段长度为k的区间,将这一段链表翻转,然后用递归求出剩下的链表的翻转结果,将这两段连接起来,并保存好起始节点就可以了。不过需要注意的是当链表长度小于k,就应该直接返回头结点,可以定义一个函数求链表的长度来完成这个要求。

class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
        int n=getLength(head);
        if (n<k) return head;
        ListNode* begin = head;
        ListNode* end = head;
        ListNode* result;
        while (end != NULL)
        {
            int count = k;
            while (end != NULL&&count>0)
            {
                end = end->next;
                count--;
            }
            if (count == 0)
            {
                result=reverseKNode(begin, end);
                begin->next = reverseKGroup(end, k);
                begin = end;
            }
            if(getLength(result)==n) return result;
        }
    }
    
    int getLength(ListNode* head)
    {
        if (head == NULL) return 0;
        int length = 0;
        while (head != NULL)
        {
            head = head->next;
            length++;
        }
        return length;
    }

    ListNode* reverseKNode(ListNode* &begin, ListNode* &end)
    {
        if (begin == end) return NULL;
        else if (begin->next == end) return begin;

        ListNode* result = new ListNode(0);
        result->next = begin;
        while (begin->next != end)
        {
            ListNode* p = begin->next;
            ListNode* q = begin->next->next;
            ListNode* temp = result->next;
            result->next = p;
            p->next = temp;
            begin->next = q;
        }
        return result->next;
    }
};



leetcode答案-Project_25_LeetCode:LeetCode问题解答 leetcode 答案Project_25_LeetCode LeetCode 问题解答 立即下载

相关推荐

K230开发板实战:5步搞定YOLOv8模型部署(附常见报错解决方案)

本文提供了一份详细的K230开发板部署YOLOv8模型的实战教程。内容涵盖从环境准备、模型转换到代码编写的完整流程,并重点解析了使用AICube工具链时常见的“生成部署文件异常”等报错解决方案,旨在帮助开发者高效完成嵌入式AI模型部署。

weixin_29053073的博客 783

每日一题--LeetCode 25 (k个一组翻转链表)java

题目描述: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1-&gt;2-&gt;3-&gt;4-&gt;5 当 k = 2 时,应当返回: 2-&gt;1-&gt;4-&gt;3-&gt;5 当 k = 3 时,应当返回: 3-&g...

【Dyson】的博客 2417

Claude Desktop Cowork国内实操指南:本地文件自动化办公

大语言模型正从‘问答式AI’迈向‘执行型协作者’,其核心能力在于直接操作本地文件、调用系统工具并嵌入真实工作流。Claude Desktop的Cowork模式正是这一范式的代表,它通过轻量沙箱VM实现对Excel、PPT、PDF、音视频等办公资产的读写与处理,无需手动编码即可完成数据清洗、会议纪要生成、自动化报告输出等任务。技术价值体现在权限可控、环境隔离、结果可交付;典型场景覆盖行政文秘的文档流转、销售运营的数据分析、开发者的脚本调试与环境验证。本文聚焦国内用户高频卡点——网络链路、系统权限与工作流断层,

weixin_30617737的博客 465

LeetCode第25题-K个一组翻转链表-java实现-图解思路与手撕代码

LeetCode第25题-K个一组翻转链表-java实现-图解思路与手撕代码

weixin_45271005的博客 672

影楼精修-肤色统一算法解析

本文介绍了影楼精修中肤色统一算法的实现方案,并以像素蛋糕软件为例进行详细分析。肤色统一旨在通过调整人像照片中皮肤区域的颜色,使其看起来更加均匀一致。像素蛋糕软件提供了AI肤色统一和传统肤色统一两种功能,分别适用于不同需求。传统肤色统一算法通过皮肤分割、人脸检测、亮度统一和颜色统一等步骤,实现了对皮肤区域的精细调整。文章还提供了亮度统一的核心代码,并对比了传统算法与AI算法的效果,指出AI算法在自然度和亮度矫正方面表现更优。整体而言,本文为影楼精修中的肤色统一提供了实用的技术参考。

Trent1985的专栏 2061

【反卷积算法】Richardson-Lucy (RL) :通过不断迭代更新图像估计值

Richardson-Lucy(RL)反卷积算法:是一种基于最大似然估计(Maximum Likelihood Estimation, MLE)的图像去卷积方法,常用于去模糊和图像增强。通过不断地更新图像估计值,来最小化模糊图像和恢复图像之间的误差,逐步消除模糊,最终接近真实的原始图像,每次迭代都会根据当前估计的图像来修正下次迭代的结果。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 3035

LeetCode 第25、27、28题

给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。使用快慢指针的方法,慢指针指向当前可以放置元素的位置,快指针用于遍历数组。给你链表的头节点head,每k个节点一组进行翻转,请你返回修改后的链表。不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

Lukegood的博客 1088

整车的智能配电系统

本文探讨了汽车电网安全的重要性,分析了传统汽车电网的现状,并重点介绍了半导体在汽车智能配电系统中的作用。半导体凭借其单向导电性和可控性,如二极管、MOSFET等,提供了更高效、安全的电力控制。通过对比传统保险丝与半导体器件,阐述了半导体在过流保护、电压监测和故障诊断方面的优势,强调其在减少安全隐患、提高能源管理和续航里程方面的贡献。极氪智能配电系统展示了如何运用半导体技术实现整车能源的精细化管理,降低维修成本,减少线束复杂性,提升安全性能。

让你爱上电路设计 1610

LeetCode 第25题: k个一组翻转链表

LeetCode 第25题: k个一组翻转链表

u011250186的博客 326

【QGIS】软件下载安装及GIS4WRF插件使用

【QGIS】软件下载安装及GIS4WRF插件使用

WW、forever的博客 1799

高通开发系列 - System之FOTA/DFOTA包制作和升级

高通开发系列 - System之FOTA/DFOTA包制作和升级

fulinux的博客 4222

LeetCode #25 Reverse Nodes in k-Group

LeetCode #25 Reverse Nodes in k-Group题目描述 给出一个单向链表,再给出一个常数k。 任务如下: 步骤一:讲单向链表前k个元素的顺序倒转 步骤二:剩下的元素重复执行步骤一、步骤二,直到剩下的元素不足k个。 要求:只允许使用常量级别的额外空间。例子: 原链表:1->2->3->4->5 当k=2:2->1->4->3->5 当k=3:3->2->1-

Megumi 339

为什么reg2cgate的setup难以满足?

从图上我们可以看出,clock gate的clock latency是delay1,reg1的clock latency是delay1+delay2,可以明显的看出,reg2cgate的setup,其launch clock path delay天生是要比capture clock path delay要多delay2的,因此其setup相对于reg2reg是不好满足的。因此,在数字后端脚本、flow上比较擅长,大家如果有相关的问题,可以提供答疑咨询服务。因此,能够让我们去处理的就是delay2的值。

芯冰乐 1926

Leetcode #25 Reverse Nodes in k-Group

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

每天都要有进步 262

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Leetcode #25 Reverse Nodes in k-Group K区间链表交换 解题报告

1 解题思想昨天在写组内交换的时候我就说了,肯定有K组版的,结果就是今天啊。。嗯,因为我写的和做的不同步,所以已经不记得题目顺序了。那么在看今天的之前,可以先去回顾下昨天的,今天的是昨天的推广版,昨天的可以理解为今天的K=2的特殊情况。 Leetcode #24. Swap Nodes in Pairs 链表节点交换 解题报告所以题目的意思也就是说,给定一个链表,每K个为一个小组,小组内的顺序进

MebiuW的专栏 791

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[ LeetCode ] #25. Reverse Nodes in k-Group(翻转相邻的k个元素)

题目:25. Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked listkat a time and return its modified list. kis a positive integer and is less than or equal to the length of t...

xn's blog 305

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

DAY27:leetcode #25 Reverse Nodes in k-Group

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

zcy19941015的博客 365

【一天一道LeetCode】#25. Reverse Nodes in k-Group

一天一道LeetCode系列(一)题目 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 s

ZeeCoder 674

[leetcode #25]Reverse Nodes in k-Group

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

allforwhat的专栏 367

[LeetCode] #25 Reverse Nodes in k-Group

Given a linked list, reverse the nodes of a linked listkat a time and return its modified list. If the number of nodes is not a multiple ofkthen left-out nodes in the end should remain as it is. ...

weixin_30670965的博客 64

LeetCode_#25_Reverse_Nodes_in_k-Group

//挺快的但是空间占用率比较高而且感觉写的好麻烦哦orz class Solution { public: ListNode * reverseKGroup(ListNode* head, int k) { vector<ListNode*> every; ListNode* ptr; ptr = head; while (ptr != NULL) { eve...

真的想嫁给朱一龙诶 147

LeetCode OJ | #25 Reverse Nodes in k-Group

考试前刷一波leetcode。 这次的问题依然是简单的,但是处理方式极为麻烦,因为涉及到了单向链表的反转操作。C++有个规律:一旦涉及到指针和链表的东西,绝对会有无数的边界情况和细节在等着你。 先上题: Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.If

lycronaldo的博客 406

Reverse Nodes in k-Group_Leetcode_#25

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 i

LittleBob180的专栏 297

【LeetCode】#25k个一组翻转链表(Reverse Nodes in k-Group)

【LeetCode】#25k个一组翻转链表(Reverse Nodes in k-Group) 题目描述 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 给定这个链表:1-&gt;2-&gt;3-&gt;4-&gt;5 当 k = 2 时,应当返回: 2-&gt;1...

weixin_43858604的博客 204

LeetCode 25. Reverse Nodes in k-Group 题解

本题是链表操作的经典难题。递归和迭代两种实现方式翻转操作的正确实现组与组之间的连接边界情况处理。

cannonjinx的博客 1018
上一篇: LeetCode #206 - Reverse Linked List
下一篇: LeetCode #26 - Remove Duplicates from Sorted Array
LawFile
博客等级 码龄10年 5粉丝 627原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值