当前位置: 首页 > news >正文

LeetCode Hard|【25. K 个一组翻转链表】

力扣题目链接

首先我们考虑一种很直观的思路:

  • 遍历链表,统计链表长度
  • 遍历链表,进行翻转
    • 对于每一组长度为 K 的节点,进行翻转
    • 如果剩余节点不足 K 个,则不进行翻转
  • 连接翻转后的子链表
    这里我们用的就是只用 O(1) 额外内存空间的算法

关于如何 k 个节点个数的链表

我认为这里最重要的是链表的翻转,当你知道需要翻转的链表长度的时候,这个方法应该按照固定模版来进行,也就是我们的三指针:

for (int i = 1; i < k; i++) {cur->next = nex->next;nex->next = pre->next;pre->next = nex;nex = cur->next;
}

但是还记得我们之前在做反转链表题目的时候是怎么处理的嘛:

while (cur) {ListNode *nex = cur->next;cur->next = pre;pre = cur;cur = nex;
}

这里简单直观多了,最大的区别是什么呢?

首先,做整表翻转的时候,我们的逻辑非常简单
其次,对于对 k 个节点分组翻转,并且我们还必须做到对剩余的 k 个节点不进行翻转,势必有这样形式的代码:

while (cout >= k) {...for (...) {...}...count -= k;
}

CPP总体代码:

class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {if (!head || k == 1) return head;ListNode *dummyHead = new ListNode();dummyHead->next = head;ListNode *cur = dummyHead, *pre = dummyHead, *nex = dummyHead;int count = 0;cur = head;while (cur) {cur = cur->next;count++;}while (count >= k) {cur = pre->next;nex = cur->next;for (int i = 1; i < k; i++) {cur->next = nex->next;nex->next = pre->next;pre->next = nex;nex = cur->next;}pre = cur;count -= k;}return dummyHead->next;}
};

相关文章:

LeetCode Hard|【25. K 个一组翻转链表】

力扣题目链接 首先我们考虑一种很直观的思路&#xff1a; 遍历链表&#xff0c;统计链表长度遍历链表&#xff0c;进行翻转 对于每一组长度为 K 的节点&#xff0c;进行翻转如果剩余节点不足 K 个&#xff0c;则不进行翻转 连接翻转后的子链表 这里我们用的就是只用 O(1) 额外内…...

python爬虫预备知识三-多进程

python实现多进程的方法&#xff1a;fork、multiprocessing模块创建多进程。 os.fork方法 os.fork方法只适合于unix/linux系统&#xff0c;不支持windows系统。 fork方法调用一次会返回两次&#xff0c;原因在于操作系统将当前进程&#xff08;父进程&#xff09;复制出一份…...

【zlm】针对单个设备的音频的编码的设置

目录 结论 原理 测试 结论 为了防止zlm音频配置里设置成opus优先&#xff0c;在国标推流时&#xff0c;调用push时&#xff0c;默认加上codecpcma 如下 https://10.60.100.196:10443/index/api/webrtc?applive&streamtest&typepush&codecpcma 原理 测试 …...

文案人的梦工场,网易入职指南!

网易云对于咱们一些有点文艺的文案策划来说&#xff0c;简直就是梦中情司。 在这里工作锻炼机会很多&#xff0c;也很开拓眼界&#xff0c;能获得相当于在别处3倍能力的成长速度&#xff0c;福利待遇也是很好的。 要进入网易云音乐做文案策划&#xff0c;你可以按照以下步骤进…...

做一个能和你互动玩耍的智能机器人之七-接入对话和大模型

接入科大迅飞的语音识别&#xff1a; private void printResult(RecognizerResult results) {String text JsonParser2.parseIatResult(results.getResultString());String sn null;// 读取json结果中的sn字段try {JSONObject resultJson new JSONObject(results.getResult…...

阿里巴巴商家联系方式采集软件使用教程

以下是一个批量访问阿里巴巴商家店铺的Python代码示例&#xff1a; import requestsdef visit_shop(shop_url):try:response requests.get(shop_url)if response.status_code 200:print(f"成功访问店铺&#xff1a;{shop_url}")else:print(f"访问店铺失败&am…...

Golang | Leetcode Golang题解之第326题3的幂

题目&#xff1a; 题解&#xff1a; func isPowerOfThree(n int) bool {return n > 0 && 1162261467%n 0 }...

人大金仓(Kingbase)数据库高阶函数详解

人大金仓&#xff08;Kingbase&#xff09;数据库高阶函数详解 人大金仓&#xff08;Kingbase&#xff09;数据库是一款基于 PostgreSQL 的国产关系型数据库(PostgreSQL 高阶函数详解&#xff1a;全面深入的功能与实用示例 )&#xff0c;提供了丰富的高阶函数&#xff0c;以支…...

云原生真机实验

基于Proxmox VE构建中小企业云计算平台 首先Proxmox VE是什么&#xff1f;能用来做什么&#xff1f; Proxmox VE是一个完整的企业虚拟化开源平台。借助内置的 Web 界面&#xff0c;可以在单个解决方案上轻松管理 VM(开虚拟机的) 和容器、软件定义的存储和网络、高可用性群集以…...

【电子电路学习笔记】——模电笔记

关于专栏&#xff1a;本专栏用于分享学习电子电路过程中记录的笔记。模电部分使用的教材是高等教育出版社&#xff0c;华成英主编的《模拟电子技术基础&#xff08;第六版&#xff09;》&#xff08;其他版本的内容差不多&#xff0c;建议使用最新版教材&#xff09;&#xff1…...

部署伪分布式 Hadoop集群

部署伪分布式 Hadoop集群 一、JDK安装配置1.1 下载JDK1.2 上传解压1.3 java环境配置 二、伪分布式 Hadoop 安装配置2.1 Hadoop 下载2.2 上传解压2.3 Hadoop 文件目录介绍2.4 Hadoop 配置2.4.1 修改 core-site.xml 配置文件2.4.2 修改 hdfs-site.xml 配置文件2.4.3 修改 hadoop-…...

十九、虚拟机VMware Workstation(CentOSDebian)的安装

目录 &#x1f33b;&#x1f33b; 一、安装 VMware Workstation1.1 安装 VMware Workstation1.2 虚拟机上安装 CentOS1.3 虚拟机安装 Debian 二、配置Debian方便第三方工具远程连接2.1 配置debian2.2 安装远程SSH工具并连接 一、安装 VMware Workstation 官网下载 本地资源库…...

理解Android framework之AOSP:从内核到应用层

一、AOSP Android framework确保设备的各个部件和程序顺利协同工作。对于想要全面了解 Android 设备内部工作原理、开发高质量应用、优化设备性能以及充分利用 Android 生态系统潜力的人来说&#xff0c;了解 Android 框架也是必不可少的。它是连接用户、开发者和 Android 平台…...

杂谈c语言——3.内存对齐

先看两个例子&#xff1a; typedef struct S {int a;double b;char c; }S;typedef struct B {int a;char b;double c; }B;int main() {printf("S : %d\n", sizeof(S));printf("B : %d\n", sizeof(B));return 0; } 结果为&#xff1a; S:24; B:16&#xff…...

瑞芯微Android设备指定应用开启性能模式

本文档主要针对特定应用&#xff08;如 安兔兔&#xff09;如何进行加速及性能的提升做相关说明。 快速开启方法 开启与关闭 在 device/rockchip/rk3xxx/下配置文件:package_performance.xml&#xff0c;在其中的节点中加入需要使用性能模式的包名&#xff1a;&#xff08;…...

ASP.NET Core基础 - 简介

目录 一. 简介 A、跨平台性 B、高性能 C、开源性 D、模块化与可扩展性 E、集成现代前端技术 二. ASP.NET 4.x 和 ASP.NET Core 比较 A、架构与平台支持 B、性能 C、开发体验 D、社区支持与生态系统 三. NET 与 .NET Framework 比较 A、概念范围 B、跨平台能力 C…...

Flask+LayUI开发手记(一):LayUI表格的前端数据分页展现

用数据表格table展示系统数据&#xff0c;是LayUI的基本功能&#xff0c;编码十分简单&#xff0c;就是通过table.render()渲染&#xff0c;把属性配置好就OK了&#xff0c;十分方便&#xff0c;功能也十分强大。 不过&#xff0c;在实现时&#xff0c;把table的有个功能却理解…...

Vulnhub靶场DC-9练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 发现SQL注入点2. Sqlmap跑数据3. 文件包含4. SSH爆破端口敲门服务5. 提权&#xff08;写入/etc/passwd&#xff09; 0x04 总结 0x00 准备 下载链接&#xff1a;https://download.vulnhub.com/dc/DC-9.z…...

Java对象内存布局和对象头

文章目录 面试题Object object new Object() 谈谈你对这句话的理解&#xff1f; 对象在堆内存中存储布局权威定义&#xff08;周志明老师JVM第三版&#xff09;对象在堆内存中的存储布局详解对象头的MarkWord源码对象标记源码 对象内存布局&#xff08;使用JOL证明&#xff09…...

python:基于YOLO框架和遥感图像的目标检测

作者&#xff1a;CSDN _养乐多_ 本文将介绍如何通过YOLO框架和遥感图像进行目标检测的代码。 文章目录 一、数据集下载与格式转换1.1 NWPU VHR-10&#xff08;73.1 MB&#xff09;1.2 DIOR&#xff08;7.06 GB&#xff09;1.3 配置data.yaml 二、训练三、训练结果 一、数据集…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...