力扣25. K 个一组翻转链表

Problem: 25. K 个一组翻转链表

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

1.创建虚拟头节点dummy并将其next指针指向head,创建指针pre、end均指向dummy;
2.编写反转单链表的函数reverse
3.当end -> next 不为空时:

3.1.每次k个一组将end指针后移;
3.2.判断当end指针为空时直接退出循环;
3.3.创建nextP指针指向end -> next,strat指针指向pre -> next;end的next指针置空;
3.4.从start指向的节点开始反转链表,并使得pre的next指针指向其;
3.5.start的next指针指向nextP,使得原始链表能连接起来
3.6.使pre指针指向start指针,end指针指向pre指针

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为链表的长度

空间复杂度:

O ( n ) O(n) O(n)

Code

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:/*** A set of K reversed single-linked lists* * @param head The head node of the list to be reversed* @param k Number of nodes to be reversed* @return ListNode**/ListNode* reverseKGroup(ListNode* head, int k) {//Create a virtual node ListNode* dummy = new ListNode(INT_MIN);ListNode* pre = dummy;ListNode* end = dummy;dummy -> next = head;while (end -> next != nullptr) {//Each k is in a groupfor (int i = 0; i < k && end != nullptr; ++i) {//Pointer end moves backend = end -> next;}if (end == nullptr) {break;}ListNode* start = pre -> next;ListNode* nextP = end -> next;//disconnectend -> next = nullptr;//reverse k nodes and return the new headnode which //is the last node of k nodespre -> next = reverse(start);//connect next group k nodes by next pointerstart -> next = nextP;pre = start;end = pre;}return dummy -> next;}/*** Reverse the single linked list* * @param head The node of the list to be reversed* @return ListNode**/ListNode* reverse(ListNode* head) {ListNode* pre = nullptr;ListNode* cur = head;while (cur != nullptr) {ListNode* nextP = cur -> next;cur -> next = pre;pre = cur;cur = nextP;}return pre;}
};

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

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

相关文章

Java强连通分量知识点(含面试大厂题和源码)

在大厂面试中&#xff0c;与拓扑排序相关的问题通常涉及到对图的处理和算法设计。以下是三道可能出现在大厂面试中的编程题目&#xff0c;以及相应的Java源码实现。 题目 1&#xff1a;课程依赖关系 描述&#xff1a; 给定一个课程列表和课程之间的依赖关系&#xff0c;为所有…

Bigtable [OSDI‘06] 论文阅读笔记

原论文&#xff1a;Bigtable: A Distributed Storage System for Structured Data (OSDI’06) 1. Introduction Bigtable 是一种用于管理结构化数据的分布式存储系统&#xff0c;可扩展到非常大的规模&#xff1a;数千台服务器上的数据量可达 PB 级别&#xff0c;同时保证可靠…

学习java第三十五

Spring事务传播行为&#xff1a; PROPAGATION_REQUIRED(默认) 如果当前没有事务&#xff0c;就新建一个事务&#xff0c;如果已经存在一个事务中&#xff0c;加入到这个事务中 PROPAGATION_SUPPORTS 支持当前事务&#xff0c;如果当前没有事务&#xff0c;就以非事务方式执行 P…

golang语言和JAVA对比

引言: 在当今的软件开发领域,有许多编程语言供开发人员选择。其中,Golang和Java是两种备受开发者青睐的语言。本文将探讨Golang和Java之间的比较和对比,分析它们在语言特性、性能、平台支持、社区和生态系统、开发效率和可维护性等方面的异同。 一、语言特性和性能 Golang…

二维相位解包理论算法和软件【全文翻译-路径跟踪方法(4.1)】

4.1 引言 在第 2 章中我们注意到,从一个像素点开始计算的解包相位可能取决于积分路径。如果我们沿着两条不同的路径从一个像素点到另一个像素点,我们可能会得到两个不同的解包裹相位答案。我们发现,这些不一致是由称为残差的点状结构造成的。残差位于由四个像素组成的 &quo…

加密算法(二)

1、SHA-256加密算法&#xff1a; package com.arithmetic.encryption; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; //使用java.security.MessageDigest类来进行SHA-256摘要的计算。 //通过getInstance("SHA-256")方法获取…

阿里巴巴拍立淘API新功能揭秘:图片秒搜商品,实现智能化个性化购物新体验

在数字化快速发展的今天&#xff0c;智能化和个性化已经成为购物体验中不可或缺的元素。为了满足消费者日益增长的购物需求&#xff0c;阿里巴巴中国站不断推陈出新&#xff0c;其中拍立淘API的新功能——图片秒搜商品&#xff0c;无疑为智能化个性化购物体验开创了新的篇章。 …

js怎样判断status

相信大家都知道Switch开关吧&#xff0c;他有两种状态&#xff0c;通常用1/2表示&#xff0c;开启时为true&#xff0c;关闭时为false&#xff0c;那么我们该怎样判断他是否为开启还是关闭你? 我们可以声明一个变量&#xff0c;让它等于status&#xff0c;判断它是否等于1/2&…

【机器学习入门】使用YOLO模型进行物体检测

系列文章目录 第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 第5章 逻辑斯蒂回归和分类 第5章 支持向量机 第6章 人工神经网络(一) 第6章 人工神经网络(二) 卷积和池化 第6章 使用pytorch进行手写数字识别 文章目录 系列文章目录前…

GitHub与Namecheap域名绑定解除指南:删除CNAME文件

github namecheap 域名到期怎么解绑 什么是CNAME文件&#xff1f; CNAME文件是位于你的username.github.io仓库根目录中的一个简单文本文件&#xff0c;它指明了你的GitHub Pages站点要绑定的自定义域名。GitHub通过读取这个文件中的内容来配置DNS解析&#xff0c;从而将你的自…

八股面试速成—计算机网络部分

暑期实习面试在即&#xff0c;这几天八股和算法轮扁我>_ 八股部分打算先找学习视屏跟着画下思维导图&#xff0c;然后看详细的面试知识点&#xff0c;最后刷题 其中导图包含的是常考的题&#xff0c;按照思维导图形式整理&#xff0c;会在复盘后更新 细节研究侧重补全&a…

基于单片机冬季供暖室温调节控制系统

**单片机设计介绍&#xff0c;基于单片机冬季供暖室温调节控制系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的冬季供暖室温调节控制系统是一种集温度检测、控制和显示功能于一体的智能化系统。该系统以单片机为…

Linux多进程下载之aria2c

安装 sudo apt-get install aria2下载 aria2c -x4 [link]在这个命令中&#xff0c;-x4’表示你想要使用4个连接来下载文件。你可以根据你的需求调整这个数字。 如果遇到这个错误&#xff1a;errorCode1 SSL/TLS handshake failure: not signed by known authorities or inva…

C++ 指针与结构

三种存取结构成员的方式&#xff1a; ① 通过结构变量名&#xff1b; ②通过指向结构的指针和间接运算符(*)&#xff1b; ③通过指向结构的指针和指向成员运算符(->);

【已解决】ZIP压缩文件如何设置密码?

ZIP是常用的压缩格式之一&#xff0c;对于重要的ZIP文件&#xff0c;我们还可设置密码保护&#xff0c;那ZIP压缩文件怎么设置密码呢&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 给ZIP文件设置密码&#xff0c;我们需要用到支持ZIP格式的解压缩软件&#xff0c;比如7…

2024HW-->Wireshark攻击流量分析

在HW中&#xff0c;最离不开的&#xff0c;肯定是看监控了&#xff0c;那么就要去了解一些wireshark的基础用法以及攻击的流量&#xff01;&#xff01;&#xff01;&#xff01; 1.Wireshark的基本用法 比如人家面试官给你一段流量包&#xff0c;你要会用 1.分组详情 对于我…

图像处理ASIC设计方法 笔记14 图像旋转ASIC的错误处理相关设计

目录 1 流水线暂停的处理1)"斜截"2)"直截"2 DSP引发的异常处理1)写异常信号时2)读异常信号时图像旋转ASIC芯片的错误处理方面的设计,分为与FIFO的接口出现异常,和与DSP的接口出现异常两种情况。 本质上,图像旋转ASIC芯片的外部接口设备,也只有FIF…

UE4_如果快速做出毛玻璃效果_假景深

UE4_如果快速做出毛玻璃效果_假景深 2022-08-20 15:02 一个SpiralBlur-SceneTexture材质节点完成效果&#xff0c;启用半透明材质通过修改BlurAmount数值大小调整效果spiralBlur-SceneTexture custom节点&#xff0c;HLSL语言float3 CurColor 0;float2 BaseUV MaterialFloa…

Python学习笔记,格式化字符

1&#xff0c;print(f"{a} {b}")&#xff1b; 2,print("%d %d" % (a, b)); 3,print("{0} {1}".format(1, 2)); 4,print("{0:*<20}".format("jdz")) 在"jdz"的右侧填充"*"&#xff0c;使格式化后的…

pytest的时候输出一个F后面跟很多绿色的点解读

使用pytest来测试pyramid和kotti项目&#xff0c;在kotti项目测试的时候&#xff0c;输出一个F后面跟很多绿色的点&#xff0c;是什么意思呢&#xff1f; 原来在使用pytest进行测试时&#xff0c;输出中的“F”代表一个失败的测试&#xff08;Failed&#xff09;&#xff0c;而…