25. K 个一组翻转链表

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

//抄的
class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {if (!head || k == 1) return head;ListNode dummy(0);dummy.next = head;ListNode* prev_tail = &dummy;while (true) {ListNode* check = prev_tail->next;for (int i = 0; i < k; i++) {if (!check) return dummy.next; // 不足 K 个,直接返回check = check->next;}// 反转当前 K 个节点ListNode* curr_head = prev_tail->next;ListNode* prev = nullptr;ListNode* curr = curr_head;for (int i = 0; i < k; i++) {ListNode* next = curr->next;curr->next = prev;prev = curr;curr = next;}// 连接已反转部分prev_tail->next = prev; // 上一组的尾指向当前组的新头curr_head->next = curr; // 当前组的新尾指向剩余部分prev_tail = curr_head;  // 更新 prev_tail 为当前组的尾}}
};

处理太复杂了,难搞

逻辑先判断剩余节点是否足够,不够就直接返回保存的返回节点。如果足够,反转下面k个节点。反转结束,需要链接反转后的头到上一轮的尾,反转后的尾继续往后指。

不难得出,需要实时维护两个个指针,指向上一轮的尾和当前轮的旧头,这样才能避免链表断裂。

代码就是按上面的逻辑逐步实现的,下面对指针含义进行简要说明

dummy,虚头节点,可以视为第0轮反转后保存的尾部,dummy.next将指向第一轮反转后的头部

prev_tail,维护的前一轮反转后的尾部,开始即dummy,后面会实时变化

check,检测剩余节点个数的指针

curr_head,当前轮反转前的头,反转后的尾,最后赋值给prev_tail

prev,curr,next,正常反转就用到的指针,反转结束后,prev指向新头,curr指向下一轮

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90100.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90100.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/90100.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【力扣 中等 C】516. 最长回文子序列

目录 题目 解法一 题目 待添加 解法一 int max(int a, int b) {return a > b ? a : b; }int longestPalindromeSubseq(char* s) {const int len strlen(s);int dp[len];for (int i len - 1; i > 0; i--) {dp[i] 1;int leftDown;if (i 1 < len) {leftDown dp…

DAY 54 Inception网络及其思考

知识点回顾&#xff1a; 传统计算机视觉发展史&#xff1a;LeNet-->AlexNet-->VGGNet-->nceptionNet-->ResNet 之所以说传统&#xff0c;是因为现在主要是针对backbone-neck-head这样的范式做文章 inception模块和网络特征融合方法阶段性总结&#xff1a;逐元素相加…

1. 微服务架构演进:从单体到SpringCloud

想象一下,你刚刚花了一个下午在生产环境下部署一款单体应用,结果因为一个微小的配置变动,整个系统宕机,大量用户投诉蜂拥而至。运维紧急回滚,开发又要加班定位问题……这并非孤立事件,而是单体架构在规模和复杂性增长后常见的“连锁反应”。 一、单体架构:简单之始,复杂…

Charles 中文版抓包工具详解:加速 API 调试与网络问题排查

随着技术的不断发展&#xff0c;开发者面临的任务日益复杂&#xff0c;特别是在调试和优化API接口时。确保应用的网络请求在各种环境下的稳定性和高效性是提高用户体验的关键。Charles抓包工具作为一款强大的网络调试工具&#xff0c;能够帮助开发者精确捕获HTTP/HTTPS流量&…

巅峰对话:文心4.5 vs DeepSeek R1 vs 通义Qwen3.0 深度评测

国产大模型三强争霸&#xff0c;谁主沉浮&#xff1f; 2025年是中国大模型开源爆发之年——百度文心4.5系列横空出世&#xff0c;阿里通义Qwen3.0登顶开源榜首&#xff0c;而DeepSeek R1在编程领域悄然登顶。 三大技术路线齐头并进&#xff0c;却走出了截然不同的道路。 在这…

Linux运维安全新范式:基于TCPIP与SSH密钥的无密码认证实战

文章目录 前言1. Linux 生成SSH秘钥对2. 修改SSH服务配置文件3. 客户端秘钥文件设置4. 本地SSH私钥连接测试5. Linux安装Cpolar工具6. 配置SSHTCP公网地址7. 远程SSH私钥连接测试8. 固定SSH公网地址9. 固定SSH地址测试 前言 在云原生架构全面渗透企业IT体系的当下&#xff0c;…

行阶梯形矩阵和行最简形矩阵的区别

目录 0、主元 一、行阶梯形矩阵&#xff08;REF&#xff09; 特点&#xff1a; 二、行最简形矩阵&#xff08;RREF&#xff09; 特点&#xff1a; 0、主元 主元是&#xff1a;该行最左侧的非零元素​​&#xff08;即第一个不为零的元素&#xff09;。 一、行阶梯形矩阵&…

力扣 3258 统计满足 K 约束的子字符串数量 I 题解

此题不评价&#xff0c;有点意思&#xff0c;我在次以两种语言python 和c&#xff0c;用两种相反的思路写&#xff0c;注意细节不同。 原题链接3258. 统计满足 K 约束的子字符串数量 I - 力扣&#xff08;LeetCode&#xff09; 法一&#xff0c;c&#xff0c;先统计出不符合的…

创意Python爱心代码

创意Python爱心代码分享的技术文章大纲 引言 简述Python在图形绘制和创意编程中的优势介绍爱心代码在编程社区中的受欢迎程度本文涵盖的创意爱心代码示例及其技术亮点 基础爱心绘制 使用数学公式和turtle库绘制简单爱心代码示例&#xff1a; import turtle def draw_heart…

OSPF路由过滤

一、概述 OSPF对接收的路由的过滤适用于任意OSPF路由器&#xff0c;是通过对接收的路由设置过滤 策略&#xff0c;只允许通过过滤策略的路由被添加到本地设备的IP路由表中&#xff08;对进入OSPF路由表不进行过滤&#xff09;&#xff0c;这主要是为了减小本地设备的IP路由表规…

NPM组件 nodemantle002 等窃取主机敏感信息

【高危】NPM组件 nodemantle002 等窃取主机敏感信息 漏洞描述 当用户安装受影响版本的 nodemantle002 等NPM组件包时会窃取用户的主机名、用户名、工作目录、IP地址等信息并发送到攻击者可控的服务器地址。 MPS编号MPS-qrk7-ayms处置建议强烈建议修复发现时间2025-07-04投毒…

山东布谷科技RC物联网络远程遥控车项目源码开发:直播行业的新机遇

在当今数字化时代&#xff0c;直播行业发展得如火如荼&#xff0c;各类基于直播的创新项目不断涌现。从 2024 年的弹幕游戏到 2025 年的RC远控车项目&#xff0c;这些都是泛直播行业衍生出的极具潜力的流量项目玩法。其中&#xff0c;山东布谷鸟网络科技有限公司推出的RC远程遥…

2025年全国青少年信息素养大赛图形化(Scratch)编程小学低年级组初赛样题答案+解析

2025年全国青少年信息素养大赛图形化&#xff08;Scratch&#xff09;编程初赛样题答案解析 &#xff08;一&#xff09;分级/分组内容 本赛项晋级过程包括初赛&#xff08;在线预选赛&#xff09;、复赛&#xff08;地区选拔赛&#xff09;和决赛&#xff08;全国总决赛&…

SVG 绘图专家智能体prompt集锦:Claude、deepseek版本(一)

文章目录 0 SVG(可缩放矢量图形)0.1 SVG提示词通用模板0.2 小红书风格模版0.3 技术路线图0.4 甘特图0.5 数据可视化0.6 原型图 1 李继刚Claude Prompt1.1 知识卡片1.2 将真心话转化为周报1.3 三行情书1.4 将产品卖点转换为用户买点1.5 毒舌暖心师1.6 段子手1.7 输出反转笑话1.8…

CDN分发加速技术详解

CDN核心原理与架构1. 基本工作原理边缘节点缓存&#xff1a;将内容分发到离用户最近的边缘服务器DNS智能解析&#xff1a;引导用户访问最优节点内容预取与缓存&#xff1a;热点内容提前部署到边缘2. 典型CDN架构组成用户请求 → 智能DNS → 边缘节点(Edge Server)↑二级节点(Mi…

C++基础问题

C基础问题 掌握形参默认带缺省值的函数 函数调用时 #include <iostream>int sum(int a, int b 20) {return a b; }int main() {int a 10, b 20;int ret sum(a, b);cout << "ret: " << ret << endl;ret sum(a);/*a 使用默认值压栈: …

AI PPT探秘

—— 序言 ——AI时代已经深入到我们的生活、工作之中&#xff0c;AI不会淘汰所有的人&#xff0c;但会淘汰不会用AI的人&#xff0c;让AI处理执行&#xff0c;你专注决策&#xff01;—— 典型的四步AI PPT过程 ——AI PPT四步&#xff1a;内容——>排版——>美化——&g…

Gin Web 服务集成 Consul:从服务注册到服务发现实践指南(下)

在微服务架构中&#xff0c;Web 层作为系统的入口门面&#xff0c;承担着请求路由、权限校验和服务聚合等核心功能。本文将围绕 Gin 框架与 Consul 注册中心的集成展开&#xff0c;详细讲解 Web 服务如何实现服务注册与发现&#xff0c;帮助你构建可扩展的微服务前端架构。 承接…

PDF 的开发工具库: Adobe PDF Library

Adobe PDF Library 是 Adobe 公司提供的一个软件开发工具包(SDK)&#xff0c;它本质上是 Adobe Acrobat 的"无界面"版本&#xff0c;但功能更为强大。作为 PDF 处理领域的专业解决方案&#xff0c;它为开发者提供了创建、操作和管理 PDF 文档的全面能力。 #mermaid-s…

dubbo源码学习2-dubbo协议源码分析

协议(Protocol)的概念 协议(Protocol)是指在计算机通信或网络交互中&#xff0c;双方事先约定好的规则和标准&#xff0c;用于规范数据如何打包、传输、接收和解释。 所以简单说就是规则&#xff0c;发送数据编码的规则&#xff0c;接收数据解码的规则 Dubbo中的协议 在Dubbo…