K个一组翻转链表--囊括半数链表题的思想

K 个一组翻转链表

这道算法题就是链表多个算法思想的结合,解决这一道leetcodehot100的链表题至少能做一半了

大概有一下几个点

1.链表定位

2.链表翻转

3.哨兵节点

4.链表合并

看看题目

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

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

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

但说是算法思想很多,但这些个的算法难度复杂度加起来不过是o1+o1,还是o1

真正的难点是在翻转合并之后,精准的定位到哨兵和前缀节点

这是一开始的p0,用于合并

以及pre,用于翻转

这是一个k个链表翻转后的p0(p0是指向1)与pre(pre就是2),这里区分一下

这里p0是不会动的,然后pre是一直pre=pre.next的

所以现在的pre在蓝色链表原的最后一个,也就是翻转后的第一个

此时蓝色已经翻转了,所以我们这里需要做两个事情

1.将蓝色与后面的连起来

2.使得后面的部分也和链表最开始的状态一样(pre和p0的位置)

        ListNode temp= p0.next;//记录一下翻转后末尾的节点,因为要用来当下一段的p0

            p0.next.next = cur; //将蓝色和后面的连起来

            p0.next = pre;//将蓝色部分与前面的连起来,因为p0会指向前一段的末尾

            p0 = temp;//使得p0指向后面的头节点

下面直接开始做题

class Solution {public ListNode reverseKGroup(ListNode head, int k) {// 找到节点的数量nint n = 0;for (ListNode cur = head; cur != null; cur = cur.next) {n++;}//初始化前缀指针,哨兵节点ListNode dummy = new ListNode(0, head);ListNode p0 = dummy;ListNode pre = null;ListNode cur = head;for (; n >= k; n -= k) {//翻转链表,翻转后的pre是当前k个的最后一个,cur是下面k个的第一个for (int i = 0; i < k; i++) { ListNode nxt = cur.next;cur.next = pre; pre = cur;cur = nxt;}ListNode temp= p0.next;//记录一下翻转后末尾的节点,因为要用来当下一段的p0p0.next.next = cur; //将蓝色和后面的连起来p0.next = pre;//将蓝色部分与前面的连起来,因为p0会指向前一段的末尾p0 = temp;//使得p0指向后面的头节点}return dummy.next;}
}

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

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

相关文章

Flutter敏感词过滤实战:基于AC自动机的高效解决方案

Flutter敏感词过滤实战&#xff1a;基于AC自动机的高效解决方案 在社交、直播、论坛等UGC场景中&#xff0c;敏感词过滤是保障平台安全的关键防线。本文将深入解析基于AC自动机的Flutter敏感词过滤实现方案&#xff0c;通过原理剖析实战代码性能对比&#xff0c;带你打造毫秒级…

UML中的用例图和类图

在UML&#xff08;统一建模语言&#xff09;中&#xff0c;**用例图&#xff08;Use Case Diagram&#xff09;和类图&#xff08;Class Diagram&#xff09;**是两种最常用的图表类型&#xff0c;分别用于描述系统的高层功能和静态结构。以下是它们的核心概念、用途及区别&…

深入解析:HarmonyOS Design设计语言的核心理念

深入解析&#xff1a;HarmonyOS Design设计语言的核心理念 在当今数字化迅速发展的时代&#xff0c;用户对操作系统的体验要求越来越高。华为的HarmonyOS&#xff08;鸿蒙操作系统&#xff09;应运而生&#xff0c;旨在为用户提供全场景、全设备的智慧体验。其背后的设计语言—…

Vue 类与样式

数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式。因为 class 和 style 都是 attribute&#xff0c;我们可以和其他 attribute 一样使用 v-bind 将它们和动态的字符串绑定。但是&#xff0c;在处理比较复杂的绑定时&#xff0c;通过拼接生成字符串是麻烦且易…

Android 中获取颜色资源

在 Android 开发中&#xff0c;资源&#xff08;如字符串、颜色等&#xff09;通常存储在 res 文件夹中&#xff0c;并通过资源 ID 进行访问。资源 ID 是一个整型值&#xff0c;用于唯一标识资源&#xff0c;若需要将资源转换为整型值&#xff0c;通常是指获取资源 ID 或从资源…

Linux中的文件寻址

Linux的层级结构 在Linux中一切皆文件 其中 要注意在命令行中看实际选择写哪一种路径 相对路径 绝对路径名称的简写&#xff0c;省略了用户当前所在的系统位置此名称只有在管理当前所在系统目录中子文件时才能使用系统中不以/开有的文件名称都为相对路径在程序操作时会自动…

洛谷: P1825 [USACO11OPEN] Corn Maze S

原题链接:P1825 [USACO11OPEN] Corn Maze S - 洛谷 题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasnt just any corn maze: it featured several gravity-powered teleporter slides, which cause cows to teleport instantly from…

探秘DeepSeek:开源AI领域的创新先锋

一、引言 在人工智能迅猛发展的当下&#xff0c;众多先进的模型如雨后春笋般涌现&#xff0c;而 DeepSeek 无疑是其中备受瞩目的一颗新星。它以独特的技术优势和广泛的应用场景&#xff0c;在 AI 领域崭露头角。 二、DeepSeek 的诞生与背景 DeepSeek 由来自广东省的中国企业…

Spring Boot启动流程

1. 启动类与main方法 入口点&#xff1a;Spring Boot应用通常有一个带有SpringBootApplication注解的主类&#xff0c;并包含一个public static void main(String[] args)方法。 SpringBootApplication是一个组合注解&#xff0c;包含了&#xff1a; Configuration: 标记该类为…

设计模式——设计模式理念

文章目录 参考&#xff1a;[设计模式——设计模式理念](https://mp.weixin.qq.com/s/IEduZFF6SaeAthWFFV6zKQ)参考&#xff1a;[设计模式——工厂方法模式](https://mp.weixin.qq.com/s/7tKIPtjvDxDJm4uFnqGsgQ)参考&#xff1a;[设计模式——抽象工厂模式](https://mp.weixin.…

Android 16开发实战指南|锁屏交互+Vulkan优化全解析

一、环境搭建与项目初始化 1. 安装Android Studio Ladybug 下载地址:Android Studio官网关键配置: # 安装后立即更新SDK SDK Manager → SDK Platforms → 安装Android 16 (Preview) SDK Manager → SDK Tools → 更新Android SDK Build-Tools至34.0.0 # 通过命令行安装SDK组…

selenium应用测试场景

Selenium 是主流的 Web 自动化测试框架&#xff0c;主要用于基于浏览器的 Web 应用测试。以下是 Selenium 的典型测试场景和适用场景&#xff0c;以及与 Appium 的对比&#xff1a; 1. Selenium 的核心测试场景 (1) Web 功能测试&#xff08;Functional Testing&#xff09; 表…

[Vue]生命周期

在编程领域生命周期指的即一个对象从创建到销毁的过程。 Vue的生命周期大概分为四个阶段&#xff1a; 创建阶段 在该阶段&#xff0c;vue的主要工作是为渲染模板做准备工作。比如处理data中的数据&#xff0c;使其变为响应式数据。在html中普通的数据往往不具备响应式等一系列…

低代码平台,智慧城市建设的加速器

随着城市数字化进程加速&#xff0c;智慧停车、智慧交通、城市数据治理等领域对技术敏捷性和开发效率的需求日益凸显。低代码平台凭借其可视化开发、模块化设计和快速部署能力&#xff0c;正在成为推动城市治理智能化升级的核心工具。本文将通过低代码在智慧城市建设上应用的展…

14 配置Hadoop集群-配置历史和日志服务

第一课时 一、导入 前面的课程我们搭建了hadoop集群&#xff0c;并成功启动了它&#xff0c;接下来我们看看如何去使用集群。 测试的内容包括&#xff1a;1.上传文件&#xff0c;2.下载文件&#xff0c;3.运行程序 二、授新 &#xff08;一&#xff09;配置运行任务的历史服务器…

0102-web架构网站搭建-基础入门-网络安全

文章目录 1. 常规2 站库分离3 前后端分离4 集成环境5 docker6 分配站结语 1. 常规 结构&#xff1a;源码数据都在同服务器 影响&#xff1a;无&#xff0c;常规安全测试手法 2 站库分离 结构&#xff1a;源码和数据库不在同服务器 存储&#xff1a;其他服务器上数据库或者…

【分布式系统】-2-GFS

MIT的【分布式系统课程】学习记录 内容纯属个人学习过程中的笔记记录&#xff0c;如果有侵权现象请留言&#xff0c;会立刻删除 分布式存储系统的难点&#xff1a; 设计大型存储系统的出发点&#xff1a;利用数百台计算机资源同时完成大量工作&#xff0c;达到性能加成 如何做…

黑盒测试的场景法(能对项目业务进行设计测试点)

定义: 通过运用场景来对系统的功能点或业务流程的描述&#xff0c;设计用例遍历场景&#xff0c;验证软件系统功能的正确性从而提高测试效果的一种方法。 场景法一般包含基本流和备用流。 基本流:软件功能的正确流程&#xff0c;通常一个业务只存在一个基本流且基本流有一个…

22 安装第三方包

一、什么是第三方包 在 Python 的世界里&#xff0c;包就像是一个个功能强大的工具箱&#xff0c;它将多个 Python 模块收纳其中&#xff0c;而每个模块又蕴含着丰富多样的具体功能。可以说&#xff0c;一个包就是一系列同类功能的集合体&#xff0c;它们就像紧密协作的团队&a…

MyBatisPlus不等于如何使用

在 MyBatis Plus 中&#xff0c;ne 方法用于构建不等于条件的 SQL 查询。以下是 ne 方法的详细用法&#xff1a; 基本用法 ne 方法可以用于 QueryWrapper 或 LambdaQueryWrapper 中&#xff0c;用于指定某个字段的值不等于指定的值。它对应于 SQL 中的 ! 或 <> 操作符。 …