链表K个节点的组内逆序调整问题
链表K个节点的组内逆序调整问题
作者:Grey
原文地址:
博客园:链表K个节点的组内逆序调整问题
CSDN:链表K个节点的组内逆序调整问题
题目描述
LeetCode 25. Reverse Nodes in k-Group
本题的 follow up 是:
Follow-up: Can you solve the problem in O(1) extra memory space?
即用 O ( 1 ) O(1) O(1)的空间复杂度实现整个算法。
主要思路
本题需要设计两个方法:
第一个方法
ListNode getKGroupEnd(ListNode start, int k)
该方法表示:从链表start位置开始,数够k个位置,返回k个位置后的那个节点。
比如链表为:
...-> start -> b -> c -> d -> e
假设:k = 3,
则:表示从start开始,数够 3 个,所以返回c节点
如果是下述情况
...-> start -> b -> c -> null
假设:k = 6,
由于start后面不够 6 个节点,所以返回null,完整代码如下:
public static ListNode getKGroupEnd(ListNode start, int k) {while (--k != 0 && start != null) {start = start.next;}return start;
}
第二个方法void reverse(ListNode start, ListNode end),表示反转start到end之间的链表。
例如:原链表为:
....->a->b->c->d->e....
假设:start = a, end = d
经过reverse方法,会变成
...d->c->b->a->e.....
reverse方法也相对比较简单,就是链表反转的一种特殊情况,实现代码如下:
public static void reverse(ListNode start, ListNode end) {end = end.next;ListNode pre = null;ListNode cur = start;while (cur != end) {ListNode tmp = cur.next;cur.next = pre;pre = cur;cur = tmp;}start.next = end;
}
有了上述两个方法,我们可以比较方便实现原题要求,主流程如下
public static ListNode reverseKGroup(ListNode head, int k) {ListNode start = head;ListNode end = getKGroupEnd(start, k);if (end == null) {return head;}// 第一组凑齐了!head = end;reverse(start, end);// 上一组的结尾节点ListNode lastEnd = start;while (lastEnd.next != null) {start = lastEnd.next;end = getKGroupEnd(start, k);if (end == null) {return head;}reverse(start, end);lastEnd.next = end;lastEnd = start;}return head;
}
整个过程时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( 1 ) O(1) O(1)。
更多
算法和数据结构学习笔记
算法和数据结构学习代码
参考资料
算法和数据结构体系班-左程云
相关文章:
链表K个节点的组内逆序调整问题
链表K个节点的组内逆序调整问题 作者:Grey 原文地址: 博客园:链表K个节点的组内逆序调整问题 CSDN:链表K个节点的组内逆序调整问题 题目描述 LeetCode 25. Reverse Nodes in k-Group 本题的 follow up 是: Fol…...
安卓隐私指示器学习笔记
最近了解到Google 在Android12上新增了权限指示器,可以在信号栏的右侧显示当前访问录音机和Camera的应用,点击后可以跳转到相应应用的权限界面,消费者可以控制权限的开启和关闭。国内手机厂商最近几年都在增加隐私看板供能,消费者…...
【Jenkins】jenkins发送邮件报错:Not sent to the following valid addresses:
jenkins报错未能发送邮件到指定邮箱 注意:这是在系统配置中修改 在系统配置》邮件通知中添加配置信息 注意:这个是在项目的配置下修改 配置完成后,重新执行发送邮件成功!!!...
CSS3制作3D爱心动画
1、什么是CSS css,即层叠样式表的简称,是一种标记语言,有浏览器解释执行用来使页面变得更美观。 2、选择器 css3中新增了一些选择器,如下: 3、新样式 边框 css3新增了三个边框属性,分别是: bo…...
Python Opencv实践 - 全景图片拼接stitcher
做一个全景图片切片的程序Spliter 由于手里没有切割好的全景图片资源,因此首先写了一个切片的程序spliter。 如果有现成的切割好的待拼接的切片文件,则不需要使用spliter。 对于全景图片的拼接,需要注意一点,各个切片图片之间要有…...
echarts 几千条分钟级别在小时级别图标上展示
需求背景解决效果ISQQW代码地址strategyChart.vue 需求背景 需要实现 秒级数据几千条在图表上显示,(以下是 设计图表上是按小时界别显示数据,后端接口为分钟级别数据) 解决效果 ISQQW代码地址 链接 strategyChart.vue <!--/** * author: liuk *…...
操作系统的中断与异常(408常考点)
为了进行核心态和用户态两种状态的切换,引入了中断机制。 中断是计算机系统中的一种事件,它会打断CPU当前正在执行的程序,转而执行另一个程序或者执行特定的处理程序。中断可以来自外部设备(如键盘、鼠标、网络等)、软…...
linux下的工具---vim
一、了解vim 1、vim是linux的开发工具 2、vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行…...
代码随想录算法训练营第六十天|84. 柱状图中最大的矩形
LeetCode 84. 柱状图中最大的矩形 题目链接:84. 柱状图中最大的矩形 - 力扣(LeetCode) 和接雨水还挺像的。 代码: #python class Solution:def largestRectangleArea(self, heights: List[int]) -> int:heights.insert(0, 0…...
P14 C++局部静态变量static延长生命周期
目录 01 前言 02 变量的作用域与生命周期 2.1 什么是作用域: 2.2 什么是变量的生命周期: 03 局部静态 3.1非静态变量例子 3.2静态变量例子 04 全局变量 05 后话 01 前言 在前几期里,我们了解了static关键字在特定上下文中的含义。 …...
C语言:写一个函数,求字符串的长度,在main函数中输入字符串并输出其长度(指针)
分析: 在程序中,定义一个函数 fix,该函数使用指针变量来访问字符串中的每个字符,并计算出字符串的长度。fix 函数的参数为指向 char 类型的指针变量 p,表示需要计算长度的字符串。 在主函数 main 中,定义一…...
CentOS7安装Docker运行环境
1 引言 Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,…...
单片机调试技巧--栈回溯
在启动文件中修改 IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler HardFault_Handler PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE EQMRSEQ r0, msp ; [2]0 > Z1, get fault context from h…...
分布式锁之基于redis实现分布式锁(二)
2. 基于redis实现分布式锁 2.1. 基本实现 借助于redis中的命令setnx(key, value),key不存在就新增,存在就什么都不做。同时有多个客户端发送setnx命令,只有一个客户端可以成功,返回1(true);其他…...
python中%s的用法(字符串变量赋值办法),长字符串换行办法
参考: http://wap.mobiletrain.org/about/BBS/142752.html https://blog.csdn.net/PolarisRisingWar/article/details/131134627 https://baijiahao.baidu.com/s?id1756094563884490493&wfrspider&forpc 字符串变量赋值 "Hello, %s. Today is %s.&q…...
【Mybatis】预编译/即时sql 数据库连接池
回顾 Mybatis是一个持久层框架.有两种方式(这两种方式可以共存) 1.注解 2.xml 一.传递参数 以使用#{} 来接受参数为例 (以上两种方式一样适用的) 1)传递单个参数 #{} 可以为任意名称 2)多个参数 默认的参数名称就是接口方法声明的形参 3)参数为对象 默认给每个对象的每个属性都…...
物联网AI 无线连接学习之WiFi基础篇 802.11协议发展
学物联网,来万物简单IoT物联网!! 前言 随着物联网行业不断发展,WiFi技术的发展在其中起着非常关键的作用,也是我们日常生活中使用非常广泛的无线网络技术之一,现在我们随便买一个家用电子产品,…...
FreeRTOS-队列Queue
队列Queue 队列Queue可以用在“任务到任务”、“任务到中断”、“中断到任务”直接传输信息。 队列的阻塞访问(可指定超时时间) 只要知道队列的句柄,任务、ISR都可以读、写该队列。任务读写队列时,如果读写成功了就马上进入就绪态…...
车内总线通信技术简述
1. 前言 本文主要分享一些汽车总线通信技术(CAN、CANFD、LIN、Flex Ray、MOST、LVDS、TTP/C、Ethernet),希望对大家能有所帮助。 2. 多种汽车总线通信技术 2.1 CAN CAN(Controller Area Network)全称为“控制器局域…...
6.2 Windows驱动开发:内核枚举SSSDT表基址
在Windows内核中,SSSDT(System Service Shadow Descriptor Table)是SSDT(System Service Descriptor Table)的一种变种,其主要用途是提供Windows系统对系统服务调用的阴影拷贝。SSSDT表存储了系统调用的函数…...
Pixel Language Portal 在 WSL 中的开发环境配置与性能对比
Pixel Language Portal 在 WSL 中的开发环境配置与性能对比 1. 前言:为什么选择WSL进行开发? 对于Windows系统下的AI开发者来说,WSL(Windows Subsystem for Linux)提供了一个两全其美的解决方案。它既保留了Windows系…...
基于Matlab/Simulink的直流电机双闭环调速系统参数优化与动态响应分析
1. 直流电机双闭环调速系统基础认知 第一次接触直流电机双闭环调速系统时,我被那一堆专业术语绕得头晕——什么ASR、ACR、转速环电流环,感觉像在听天书。后来在实际项目中摸爬滚打才发现,这套系统本质上就是个"双保险"设计。想象一…...
Atmosphere-stable功能解析与实践指南:开源Switch自定义固件解决方案
Atmosphere-stable功能解析与实践指南:开源Switch自定义固件解决方案 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 传统Switch破解方案常面临系统稳定性差、原始系统安全风险…...
终极指南:如何用Ice彻底驯服macOS菜单栏混乱?
终极指南:如何用Ice彻底驯服macOS菜单栏混乱? 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice macOS菜单栏管理工具Ice是一款专为macOS 14设计的强大状态栏优化解决方案&#…...
Baichuan-M2-32B-GPTQ-Int4多语言医疗问答能力测试
Baichuan-M2-32B-GPTQ-Int4多语言医疗问答能力测试 1. 引言 想象一下这样的场景:一位国际医疗团队的医生正在处理来自不同国家患者的咨询,需要快速准确地理解并用患者熟悉的语言提供专业建议。传统的单语言医疗AI模型在这种情况下往往力不从心…...
如何用快马AI平台十分钟快速构建你的第一个Android应用原型
最近在尝试用AI工具快速构建Android应用原型,发现InsCode(快马)平台特别适合做这种快速验证。今天就用它来演示如何十分钟搭建一个天气应用原型,整个过程比传统开发方式高效太多了。 明确原型需求 首先梳理出这个天气应用需要三个核心模块:首…...
终极Mac风扇控制指南:3步掌握smcFanControl让Intel Mac运行更凉爽
终极Mac风扇控制指南:3步掌握smcFanControl让Intel Mac运行更凉爽 【免费下载链接】smcFanControl Control the fans of every Intel Mac to make it run cooler 项目地址: https://gitcode.com/gh_mirrors/smc/smcFanControl 当你的Intel Mac在高负载下工作…...
5步解锁无损音乐:洛雪音乐音源从配置到精通的完整指南
5步解锁无损音乐:洛雪音乐音源从配置到精通的完整指南 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 洛雪音乐音源项目是一个专为洛雪音乐客户端设计的开源音源集合,汇集了…...
3大突破重构多模态交互:AudioCLIP如何实现跨模态语义统一
3大突破重构多模态交互:AudioCLIP如何实现跨模态语义统一 【免费下载链接】AudioCLIP Source code for models described in the paper "AudioCLIP: Extending CLIP to Image, Text and Audio" (https://arxiv.org/abs/2106.13043) 项目地址: https://g…...
如何用三月七小助手实现星穹铁道全自动化游戏体验
如何用三月七小助手实现星穹铁道全自动化游戏体验 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 在《崩坏:星穹铁道》的广阔宇宙中,每位开拓…...
