力扣25题: K 个一组翻转链表
【题目链接】力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台,解题代码如下:
class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode curNode = head;ListNode groupHead, groupTail = head, lastGroupTail = null;int len = 0;while (curNode != null) {curNode = curNode.next;if (++len % k == 0) {groupHead = reverseGroup(groupTail, curNode);if (lastGroupTail != null) {lastGroupTail.next = groupHead;lastGroupTail = groupTail;} else {lastGroupTail = head;head = groupHead;}groupTail = curNode;}}lastGroupTail.next = groupTail;return head;}private ListNode reverseGroup(ListNode head, ListNode tail) {ListNode curNode = head, lastNode = null, nextNode;while (curNode != tail) {nextNode = curNode.next;curNode.next = lastNode;lastNode = curNode;curNode = nextNode;}return lastNode;}
【解题步骤】:
- 记录几个指针:curNode当前节点,用于依次遍历所有节点;lastGroupTail :上一K组的尾指针;groupHead:当前K组首指针,翻转之前是尾指针;groupTail:当前K组尾指针,翻转之前是首指针
ListNode curNode = head; ListNode groupHead, groupTail = head, lastGroupTail = null; - 依次遍历链表,每K个节点一组进行相应处理,对于当前K个节点来说,就是简单的链表翻转操作;
curNode = curNode.next; if (++len % k == 0) {groupHead = ListNode.reverseList(groupTail, curNode);。。。 - 新翻转一个K组指针后,如果上一K组节点不为空:将上一K组的尾指针指向当前K组首指针,然后再将当前K组尾指针设置为上一K组的尾指针
if (lastGroupTail != null) {lastGroupTail.next = groupHead;lastGroupTail = groupTail; } - 如果上一K组节点为空,说明处理的是第一组,那么翻转之后的链表首节点就是第一组的尾节点,上一K组尾指针设置为之前的链表首节点:
else {lastGroupTail = head;head = groupHead; } - 设置当前组的尾指针为当前节点
groupTail = curNode; - 重复2,3步操作,,直至遍历到链表结尾
- 最后收一下尾:将当前K组尾指针指向最后还未翻转的一组(不足K个节点)的首指针
lastGroupTail.next = groupTail;
【思路总结】
1)首先要对复杂问题分解:再复杂的问题像“”庖丁解牛“”一样,找到其中脉络,进行分解之后,都会被切割成简单的个体小单元,很容易理解和掌握。
2)其次要学会“”依此类推“”的思路:算法的解决大数据的问题,基本都是找出其中规律,周而复始的进行重复性操作,直至结束:
3)最后处理一下开头、结尾或者空指针等特殊情况即可
相关文章:
力扣25题: K 个一组翻转链表
【题目链接】力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台,解题代码如下: class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode curNode head;ListNode groupHead, groupTail head, lastGrou…...
网络安全应急响应工具之-流量安全取证NetworkMiner
在前面的一些文章中,用了很多的章节介绍流量分析和捕获工具wireshark。Wireshark是一款通用的网络协议分析工具,非常强大,关于wireshark的更多介绍,请关注专栏,wireshark从入门到精通。本文将介绍一个专注于网络流量取…...
http 401 错误
HTTP 401 错误表示未被授权,指客户端通过请求头中的身份验证数据进行身份验证,服务器返回401状态码表示身份验证失败。HTTP 401 错误通常与身份验证和授权相关的 Web 请求有关。 一、HTTP 401错误的定义 HTTP 401 错误是 HTTP 状态码的一种。由于服务器…...
Docker-Compose部署Redis(v7.2)哨兵模式
文章目录 一、前提准备1. 主从集群2. 文件夹结构 二、配置文件1. redis server配置文件2. redis sentinel配置文件3. docker compose文件 三、运行四、测试 环境 docker desktop for windows 4.23.0redis 7.2 一、前提准备 1. 主从集群 首先需要有一个redis主从集群&#x…...
解决问题:PPT中插入视频编辑模式可以播放,幻灯片放映后播放不了
目录 一、原因分析二、解决办法三、其它问题 一、原因分析 这可能是由于PowerPoint的硬件图形加速功能导致的。 二、解决办法 禁用硬件图形加速。 (1)点击《文件》选项卡 (2)点击《选项》 (3)在《高级》…...
使用react+vite开发项目时候,部署上线后刷新页面无法访问解决办法
说一下我这边的环境和使用的路由模式:vitereactBrowserRouter路由模式,所以如果你和我一样的话,可以试试我的这种解决办法,我是将项目打包后直接丢到服务器上的目录里面,然后配置nginx直接访问根目录。 我的nginx配置…...
45. 跳跃游戏 II(Java)
题目描述: 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到…...
[足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control
本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 南科大高等机器人控制课 Ch12 Robotic …...
【C++】知识点汇总(上)
C知识点复习上 一、C 概述1. 基本数据类型2. 变量定义和访问3. 常量与约束访问 二、程序控制结构详解与示例1. 表达式2. 选择控制2.1 if 语句2.2 switch 语句 3. 循环控制3.1 for 循环3.2 while 循环3.3 do-while 循环 4. goto 语句5. 控制语句的嵌套 三、函数1. 函数的定义和调…...
解决docker容器内无法连接宿主redis
背景 小程序的发短信服务挂了,随查看日志,该报错日志如下 Error 111 connecting to 127.0.0.1:6379. Connection refused. 6379是监听redis服务的端口,那大概是redis出错了。 首先查看了redis是否正常启动,检查出服务正常。 由于小…...
43 tmpfs/devtmpfs 文件系统
前言 在 linux 中常见的文件系统 有很多, 如下 基于磁盘的文件系统, ext2, ext3, ext4, xfs, btrfs, jfs, ntfs 内存文件系统, procfs, sysfs, tmpfs, squashfs, debugfs 闪存文件系统, ubifs, jffs2, yaffs 文件系统这一套体系在 linux 有一层 vfs 抽象, 用户程序不用…...
C语言编译器(C语言编程软件)完全攻略(第十二部分:VS2010下载地址和安装教程(图解))
介绍常用C语言编译器的安装、配置和使用。 十二、VS2010下载地址和安装教程(图解) 为了更好地支持 Win7 程序的开发,微软于2010年4月12日发布了 VS2010,它的界面被重新设计,变得更加简洁。需要注意的是,V…...
【VRTK】【VR开发】【Unity】18-VRTK与Unity UI控制的融合使用
课程配套学习项目源码资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【背景】 VRTK和Unity自身的UI控制包可以配合使用发挥效果。本篇就讨论这方面的实战内容。 之前可以互动的立体UI并不是传统的2D UI对象,在实际使用中…...
BERT(从理论到实践): Bidirectional Encoder Representations from Transformers【3】
这是本系列文章中的第3弹,请确保你已经读过并了解之前文章所讲的内容,因为对于已经解释过的概念或API,本文不会再赘述。 本文要利用BERT实现一个“垃圾邮件分类”的任务,这也是NLP中一个很常见的任务:Text Classification。我们的实验环境仍然是Python3+Tensorflow/Keras…...
静态网页设计——校园官网(HTML+CSS+JavaScript)
前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 使用技术:HTMLCSSJS 主要内容:对学校官网的结构进行模仿,对布局进行模仿。 主要内容 1、首页 首页以多个div对页面进行分割和布局…...
phpstudy_pro 关于多版本php的问题
我在phpstudy中安装了多个PHP版本 我希望不同的网站可以对应不同的PHP版本,则在nginx配置文件中需要知道不同的PHP版本的监听端口是多少,如下图所示 然而找遍了php.ini配置,并未对listen进行设置,好奇是怎么实现不同的PHP监听不同…...
TemporalKit的纯手动安装
最近在用本地SD安装temporalkit插件 本地安装插件最常见的问题就是,GitCommandError:… 原因就是,没有科学上网,而且即使搭了ladder,在SD的“从网址上安装”或是“插件安装”都不行,都不行!!&am…...
人生重开模拟器
前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…...
优化算法3D可视化
编程实现优化算法,并3D可视化 1. 函数3D可视化 分别画出 和 的3D图 import numpy as np from matplotlib import pyplot as plt import torch# 画出x**2 class Op(object):def __init__(self):passdef __call__(self, inputs):return self.forward(inputs)def for…...
魔术表演Scratch-第14届蓝桥杯Scratch省赛真题第1题
1.魔术表演(20分) 评判标准: 4分:满足"具体要求"中的1); 8分:满足"具体要求"中的2); 8分,满足"具体要求"中的3)…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
