字节算法-链表翻转与变形
文章目录
- 题目与变形
- 解法
题目与变形
字节一面中关于 K个一组链表反转 的题目变形。
- K个一组链表反转。
- K个一组链表反转,链表尾不足K个的元素也需要反转。
- K个一组链表反转,但是从链表尾部开始反转。
- 反转从位置 left 到位置 right 的链表节点
解法
四个算法万变不离其宗,主要掌握原题即可。
public class No0025ReverseGroup2 {public static void main(String[] args) {int[] array = {1, 2, 3, 4, 5, 6, 7, 8};int k = 3;No0025ReverseGroup2 demo = new No0025ReverseGroup2();ListNode node = ListNode.createListNode(array);System.out.println("原始节点: " + node);ListNode res = demo.reverseKGroup(node, k);System.out.println("K个一组反转: " + res);ListNode res2 = demo.reverseKGroup2(ListNode.createListNode(array), k);System.out.println("剩余不足也K个反转: " + res2);ListNode res3 = demo.reverseKGroup3(ListNode.createListNode(array), k);System.out.println("从尾部开始K个一组反转: " + res3);ListNode res4 = demo.reverseKGroup4(ListNode.createListNode(array), 3, 6);System.out.println("反转指定区域的链表: " + res4);}/*** 反转 left 到 right 位置的元素*/private ListNode reverseKGroup4(ListNode listNode, int begin, int stop) {ListNode result = new ListNode();result.next = listNode;ListNode left = result;ListNode right = result;for (int i = 0; i < stop; i++) {if (i < begin - 1) {// 保持 left.next 指向反转的起始节点left = left.next;}right = right.next;}while (left.next != right) {// 理解这里就OK了ListNode curr = left.next;left.next = curr.next;curr.next = right.next;right.next = curr;}return result.next;}/*** 变形2,从链表尾部开始 k 个一组反转*/private ListNode reverseKGroup3(ListNode listNode, int k) {int count = 0;ListNode countNode = listNode;while (Objects.nonNull(countNode)) {countNode = countNode.next;count++;}ListNode result = new ListNode(0);result.next = listNode;ListNode left = result;ListNode right = result;int beginIndex = count % 3;for (int i = 0; i < beginIndex; i++) {left = left.next;right = right.next;}while (true) {for (int i = 0; i < k && Objects.nonNull(right); i++) {right = right.next;}if (Objects.isNull(right)) {break;}ListNode leftPtr = left.next;while (left.next != right) {// 理解这里就OK了ListNode curr = left.next;left.next = curr.next;curr.next = right.next;right.next = curr;}left = leftPtr;right = leftPtr;}return result.next;}/*** 变形1,剩余元素不足K个也需要反转*/private ListNode reverseKGroup2(ListNode listNode, int k) {ListNode result = new ListNode(0);result.next = listNode;ListNode left = result;ListNode right = result;ListNode preRight = right;while (true) {for (int i = 0; i < k && Objects.nonNull(right); i++) {preRight = right;right = right.next;}if (Objects.isNull(right)) {// 处理剩余部分的反转ListNode curr = left.next;left.next = curr.next;curr.next = preRight.next;preRight.next = curr;break;}ListNode leftPtr = left.next;while (left.next != right) {// 理解这里就OK了ListNode curr = left.next;left.next = curr.next;curr.next = right.next;right.next = curr;}left = leftPtr;right = leftPtr;}return result.next;}/*** 原题,K个一组反转*/private ListNode reverseKGroup(ListNode listNode, int k) {ListNode result = new ListNode(0);result.next = listNode;ListNode left = result;ListNode right = result;while (true) {for (int i = 0; i < k && Objects.nonNull(right); i++) {right = right.next;}if (Objects.isNull(right)) {break;}ListNode leftPtr = left.next;while (left.next != right) {// 理解这里就OK了ListNode curr = left.next;left.next = curr.next;curr.next = right.next;right.next = curr;}left = leftPtr;right = leftPtr;}return result.next;}
}
// 补充自用节点类
public class ListNode {public int val;public ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val, ListNode next) {this.val = val;this.next = next;}public static ListNode createListNode(int[] array) {ListNode head = new ListNode(array[0]);ListNode node = head;for (int i = 1; i < array.length; i++) {ListNode next = new ListNode(array[i]);node.next = next;node = next;}return head;}
}
相关文章:
字节算法-链表翻转与变形
文章目录 题目与变形解法 题目与变形 字节一面中关于 K个一组链表反转 的题目变形。 K个一组链表反转。K个一组链表反转,链表尾不足K个的元素也需要反转。K个一组链表反转,但是从链表尾部开始反转。反转从位置 left 到位置 right 的链表节点 解法 四…...
十一、软考-系统架构设计师笔记-未来信息综合技术
1、信息物理系统技术概述 信息物理系统的概念 信息物理系统(Cyber-Physical Systems,CPS)通过集成先进的感知、计算、通信、控制等信息技术和自动控制技术,构建了物理空间与信息空间中人、机、物、环境、信息等要素相互映射、适时交互、高效协同的复杂系…...
非同源点云尺度对齐及点云配准(cloudcompare软件)
1.点云裁减与尺度缩放 发现口扫stl转为的点云尺度是原始点云的1000倍 打开meshlab,通过“Filters” > “Mesh Layer” > “Transform: Scale”缩放1000倍,得到以米为单位的真实尺寸 此时在meshlab中进行点云手动裁减后效果 将ply文件转为xyz文件…...
体检业务数字化管理平台,健康体检管理系统(PEIS)源码
健康体检管理系统(PEIS)源码,自动生成体检报告,提供查询、统计和分析功能 健康体检管理系统(PEIS)可以建立完整的健康档案,系统实现了与HIS系统的无缝连接,着重于临床信息系统的应用…...
【SpringCloud微服务实战04】Nacos 配置中心
一、Nacos配置添加 二、Nacos配置读取 1、引入Nacos的配置管理客户端依赖: <!--nacos配置管理依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</arti…...
无雀新功能宣传板之视频直播+Teambition
1. 今日新功能 钉钉视频会议新功能 视频会议功能,打造了一系列独具特色的通话海报模板供用户选择。其中引人瞩目的是为龙年限定的新春主题通话海报,它巧妙地融入了中国传统文化元素,将庄重且喜庆的龙年新春气息浓缩在画面之中。 自定义通话…...
学生选课系统的最简逻辑--一个学生选一门课
需求:设计一个学生选课系统,要求如下:有一个学生类,有一个课程类,还有一个Teacher类。。学生类包括姓名、学号、已选课程。课程类包括课程名称、授课老师属性。 老师包括老师的名字、老师的电话,老师的课程…...
波司登高德康:以有“韧性”的创新应变市场新浪潮
伴随着消费升级,羽绒服市场需求日益旺盛。愈发多元化的需求对于企业发展也有着更高的要求。如何更好推动行业多元化发展,可以从波司登的品牌升级、产品创新、模式创新、数字技术创新、绿色发展创新等方面窥得一二。 高德康总裁接受新华网主持人采访 对此…...
装饰你的APP:使用Lottie-Android创建动画效果
1. Lottie-Android简介 Lottie-Android是一个强大的开源库,由Airbnb开发,旨在帮助开发者轻松地在Android应用中添加高质量的动画效果。它基于Adobe After Effects软件中的Bodymovin插件,通过解析导出的JSON文件来渲染并播放复杂的矢量动画。 Lottie-Android提供了许多令人…...
成都爱尔林江院长解析巩膜镜是什么?它适合哪些人群
巩膜镜,全称为硬性透氧性巩膜接触镜,它有着特殊设计,大直径镜片像桥梁一样呈拱形覆盖角膜及角巩膜缘,从角膜上方横跨而过完全无接触、无任何机械性摩擦,最终贴合于巩膜。 巩膜镜的作用原理 光学成像: 配戴…...
苹果cms模板保护设置,防止被扒
苹果cms模板保护设置,防止被扒 如今互联网时代,网站模板前端被扒是常有的事,如何防止模板数据被扒? 保护设置方法: 登录宝塔 找到安装模板的网站 设置禁止访问文件 方法参考截图后缀填:php|html 目录填&a…...
Claude3、GPT-4、Gemini、Sora VS :谁将成为下一代科研利器?
2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…...
vue 函数防抖
背景 一个页面使用监听器,监听了页面的三个参数,页面初始化的时候,三个参数都发生了变化。发送了三次请求,页面却使用的是第二次请求的数据。希望短时间内发生多次变化的时候,只发送一次请求 思路 这个需求可以通过使用…...
WordPress建站入门教程:如何创建菜单和设置前端导航菜单?
前面我们跟大家分享了WordPress如何上传安装WordPress主题,但是启用主题后前端没有看到有导航菜单,这是因为我们还没有创建菜单和设置导航菜单。 JianYue主题导航菜单和右上角菜单 今天boke112百科就继续跟大家分享WordPress站点如何创建菜单和设置前端…...
Rust:为 Trait 定义默认的方法
当你提到“指定 trait 的实现”并使用 :: 符号时,你可能是指在某些情况下,你想直接通过 trait 而不是具体的类型来调用方法。这在 trait 提供了默认方法实现时尤其有用,因为你可以不依赖任何具体的类型实现来调用这些方法。 然而,…...
掌握Redis,看完这篇文章就够了
一,数据库的配置 内存数据库 MySQL与mongodb都是以文件的形式存储在磁盘上的 redis数据在内存中,操作内存的速度远远高于磁盘并且redis数据最终也可以存储在磁盘上 redis的存储结构为简直存储数据库类似于python中的字典的存储方式 redis的服务器与客户…...
烟火识别检测摄像头-火焰烟雾智能检测预警系统---豌豆云
火焰烟雾智能检测预警系统利用现场已有的监控摄像头,火焰烟雾智能检测预警系统对监控区域内的烟雾和火焰进行识别。 这种识别技术不仅准确率高,而且速度快,能够在短时间内对大量的视频数据进行处理和分析。 同时,该系统还能够动…...
js【详解】Promise
为什么需要使用 Promise ? 传统回调函数的代码层层嵌套,形成回调地狱,难以阅读和维护,为了解决回调地狱的问题,诞生了 Promise 什么是 Promise ? Promise 是一种异步编程的解决方案,本身是一个构…...
八股文-持续更新......
文章目录 SpringSpringBootDubboMQMysqlNettyRedis并发ZookeeperMybatisElasticsearchLinux微服务ZookeeperMybatisElasticsearchLinux...
Redis 大key和热key问题及处理
一、说说什么是Redis、及特点? Redis是一个基于内存存储数据运行并支持持久化、使用key/value形式存储的高性能的nosql数据库,适合用于存储频繁访问,数据量较小的场景下。 特点: 支持数据持久化:可以将内存中的数据保…...
CH343芯片驱动安装全攻略:从Windows到Linux再到MacOS,一篇搞定所有系统
CH343芯片跨平台驱动安装实战指南:从Windows到Linux再到MacOS的完整解决方案 第一次拿到基于CH343芯片的开发板时,我对着电脑上"无法识别的USB设备"提示发呆了十分钟。作为一款支持6Mbps高速传输的USB转串口芯片,CH343在嵌入式开发…...
告别AI幻觉!WeKnora知识库系统实测:严格依据文本,回答100%可靠
告别AI幻觉!WeKnora知识库系统实测:严格依据文本,回答100%可靠 1. 项目介绍 WeKnora是一款革命性的知识库问答系统,它彻底解决了传统大语言模型"胡说八道"的问题。通过创新的技术架构和严格的回答约束机制,…...
Wan2.1-T2V-1.3B-部署
基础环境 下载模型 modelscope download Wan-AI/Wan2.1-T2V-1.3B --local_dir ./Wan2.1-T2V-1.3Bgit clone https://github.com/Wan-Video/Wan2.1.git启动 cd gradio GRADIO_SERVER_NAME"0.0.0.0" DASH_API_KEY"sk-xxx" python t2v_1.3B_singleGPU.py --pr…...
C# 13主构造函数+Records+With表达式三重组合技(.NET 8.0正式版实测):DTO层代码减少83%,但需绕过这个编译器Bug
第一章:C# 13主构造函数案例C# 13 引入了主构造函数(Primary Constructor)语法,允许在类或结构体声明时直接定义构造参数,并自动将参数提升为类型成员(如只读字段或属性),显著简化了…...
HappyHorse-1.0空降榜首碾压Seedance 2.0:60分断层领先,开源可商用,音视频联合生成新王诞生!
文章目录引言第1章:榜单屠榜,数据说话1.1 Artificial Analysis 榜单成绩1.2 为什么60分的差距如此恐怖?1.3 唯一短板:音频赛道第2章:技术亮点详解2.1 核心参数:150亿参数的庞然大物2.2 音视频联合生成&…...
kotlin协程取消执行
取消启动协程的整个scope,该scope下面的所有协程都会被取消。协程内部是通过抛出一个特殊的异常来实现取消的:CancellationException。如果想在取消时传递取消的原因,可以在调用cancel时主动提供一个CancellationException的实例:…...
武汉围挡厂家:装配式市政围挡选购指南
随着城市基建与市政施工持续推进,施工围挡已不再是单一的隔离设施,而是集安全防护、规范施工、城市风貌管理于一体的工程配套产品。对于武汉及华中地区工程相关从业者而言,科学选择适配项目需求的装配式围挡,对施工安全、验收合规…...
Electron实战:解决微信登录页二维码不显示的5个关键配置(附完整代码)
Electron微信登录页二维码显示问题的深度解决方案 微信登录已经成为现代桌面应用的标准功能之一,但Electron开发者在集成过程中常常遇到二维码无法显示的棘手问题。这并非简单的代码错误,而是微信安全机制与Electron特殊浏览器环境之间的微妙博弈。 1. 问…...
前端使用AI试水报告读
1 实用案例 1.1 表格样式生成 本示例用于生成包含富文本样式与单元格背景色的Word表格文档。 模板内容: 渲染代码: # python-docx-template/blob/master/tests/comments.py from docxtpl import DocxTemplate, RichText # data: python-docx-template/bl…...
嵌入式舵机精确控制:基于硬件定时器的PWM脉宽稳定实现
1. Servo库技术解析:面向嵌入式系统的单路舵机精确控制实现1.1 库定位与工程价值Servo库是一个轻量级、面向资源受限嵌入式平台的单路舵机控制库。其核心设计哲学并非追求功能堆砌,而是聚焦于时间精度、脉宽稳定性与硬件抽象解耦三大关键指标。在STM32F0…...
