Leetcode刷题笔记题解(C++):25. K 个一组翻转链表

news2024/11/28 12:47:21

思路:利用栈的特性,K个节点压入栈中依次弹出组成新的链表,不够K个节点则保持不变

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
#include <stack>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @param k int整型 
     * @return ListNode类
     */
    ListNode* reverseKGroup(ListNode* head, int k) {
        // write code here
        stack<ListNode*> sk;//用来保存链表节点
        ListNode* temp = head;
        ListNode* ret = new ListNode(-1);
        ListNode* ret1 = ret;
        //按k个节点一次一次去遍历链表
        while(1){
            int count = k;
            //K个节点之内依次push入栈中
            while(count&&temp){
                sk.push(temp);
                temp = temp->next;
                count--;
            }
            //如果push完了还不够数量则该次不需要反转链表反转保持原型进行链接,从而跳出循环
            if(count){
                //下一阶段的第一个节点
                ret1->next = head;//这句不能省略的原因是如果k大于链表的长度,没有这句话return结果为空,但是应该是该链表
                break;
            }
            //如果够数量则从栈中弹出加入结果链表中
            while(!sk.empty()){
                ret1->next = sk.top();
                sk.pop();
                ret1 = ret1->next;
            }
            //结果链表的下一节点指向后面的链表
            ret1->next = temp;
            head = temp;
        }   
        
        return ret->next;

    }
};

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

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

相关文章

OpenAI承认ChatGPT变懒惰,正在修复该问题

OpenAI旗下的官方ChatGPT账号在社交平台表示&#xff0c;已经收到了大量用户关于GPT-4变懒惰的反馈。 这是因为自11月11日以来&#xff0c;OpenAI就没有更新过该模型。当然这不是故意的&#xff0c;大模型的行为是不可预测的&#xff0c;正在研究修复该问题。 外界猜测&#x…

AirServer Mac7.27中文破解2024最新图文安装激活教程含许可证

AirServer Mac 7.27中文破解是一款便捷式投屏软件&#xff0c;它的主要功能在于实时地将移动设备上的图像画面内容投放到电脑设备上&#xff0c;让电脑成为iPad、iPhone等iOS系统设备的大屏显示器。 在设备之间建立局域网内的信号发送与接收通道&#xff0c;确保数据可以稳定安…

(JAVA)-IO流-序列化流

序列化流&#xff1a;能把java的对象写到本地文件中 构造方法 public class test {public static void main(String[] args) throws IOException {student snew student("邓子",19);ObjectOutputStream oosnew ObjectOutputStream(new FileOutputStream("D:\\a…

LAMP和分离式LNMP部署

目录 一.什么是LAMP&#xff1f; 二.安装LAMP 先安装apache&#xff0c;httpd网页服务&#xff1a; 接着安装mysql&#xff1a; 安装php&#xff1a; 创建论坛&#xff1a; 三.安装分布式LNMP&#xff1a; 先安装nginx&#xff1a; 到另一台主机安装php&#xff1a; …

我有才专属定制适合个人的知识付费平台,打造个性化品牌与自主管理体验

在当今数字化时代&#xff0c;知识付费平台已经成为人们获取专业知识、提升自身素质的重要渠道。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。因此&#xff0c;我们提出了专属定制适合个人的知识付费平台的概念&…

win11 CUDA(12.3) + cuDNN(12.x) 卸载

win11 CUDA&#xff08;12.3&#xff09; cuDNN&#xff08;12.x&#xff09;卸载 信息介绍卸载 信息介绍 本文是对应 win11RTX4070Ti 安装 CUDA cuDNN&#xff08;图文教程&#xff09; 的卸载 卸载 控制面板 --> 程序 --> 卸载程序 卸载掉图中红框内的&#xff0c…

题目:纪念品分组(蓝桥OJ 532)

题目描述&#xff1a; 解题思路&#xff1a; 本题使用贪心思想&#xff0c;先排序&#xff0c;则最大和最小就分别位于头部和尾部。如果最大和最小之和不超过容量&#xff0c;就取两个放到一个&#xff08;ans&#xff09;并去除&#xff1b;如果最大和最小之和超过容量&#x…

模型 心流

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。完全投入其中。 1 心流的应用 1.1 优秀运动员的心流体验 迈克尔乔丹&#xff08;Michael Jordan&#xff09;&#xff1a;篮球之神乔丹在比赛中经常进入心流状态&#xff0c;他曾表示&#xff…

低代码是你得菜吗?传统编程如何应对低代码的挑战?有哪些优秀的低代码平台?

低代码开发是一种越来越受到关注的软件开发方式&#xff0c;它旨在通过简化和加速应用程序开发过程来降低编程门槛。随着技术的进步和对快速交付的需求增加&#xff0c;低代码平台提供了一个快速构建应用程序的环境&#xff0c;无需深入的编程知识&#xff0c;使非专业开发人员…

linux7安装python3.12.1教程

1.下载tar.gz包 地址&#xff1a;Python Release Python 3.12.1 | Python.org 2.上传包到linux服并解压 cd /home/local/ ll tar -zxvf Python-3.12.1.tgz 3.安装编译python所需环境 yum install -y gcc yum install -y zlib* yum -y install zlib-devel bzip2-devel opens…

tidb安装 centos7单机集群

安装 [rootlocalhost ~]# curl --proto https --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh [rootlocalhost ~]# source .bash_profile [rootlocalhost ~]# which tiup [rootlocalhost ~]# tiup playground v6.1.0 --db 2 --pd 3 --kv 3 --host 192.168.1…

ThreadLocal类的实例解析以及常用方法通过具体案例了解ThreadLocal的基本使用

目录 前言 一、ThreadLocal 分析 二、ThreadLocal的基本使用 三、实现原理 四、存在问题 1.引用 2.问题详情 3.解决方案 五、章末 前言 小伙伴们大家好&#xff0c;谈到多线程就不可不谈解决线程安全 的操作类ThreadLocal了 一、ThreadLocal 分析 ThreadLocal会为每个…

Linux实用操作

一、各类小技巧&#xff08;快捷键&#xff09; 1.1 ctrl c 强制停止 Linux某些程序的运行&#xff0c;如果想要强制停止它&#xff0c;可以使用快捷键ctrl c 命令输入错误&#xff0c;也可以通过快捷键ctrl c&#xff0c;退出当前输入&#xff0c;重新输入 1.2 ctrl d…

Linux C/C++ 从内存转储中恢复64位ELF可执行文件

ELF&#xff08;Executable and Linking Format&#xff09;是一种对象文件的格式&#xff0c;它主要用于定义ELF&#xff08;Executable and Linking Format&#xff09;是一种对象文件的格式&#xff0c;它主要用于定义不同类型的对象文件中的内容以及它们的存储方式。一个EL…

Jenkins参数化构建及代码发布

如何使用gitlab--web端可以观看此篇教程 https://blog.csdn.net/m0_59933574/article/details/134528050?spm1001.2014.3001.5502https://blog.csdn.net/m0_59933574/article/details/134528050?spm1001.2014.3001.5502 整体思路 依赖环境及工具 Git Centos7及以上 Gitla…

【利用二手车数据进行可视化分析】

利用二手车数据进行可视化分析 查看原始数据去除重复数据需求分析1.统计全国总共有多少量二手车&#xff0c;用KPI图进行展示2.统计安徽总共有多少量二手车&#xff0c;用KPI图进行展示3.统计合肥总共有多少量二手车&#xff0c;用KPI图进行展示4.取最贵的10辆二手车信息&#…

STM32——继电器

继电器工作原理 单片机供电 VCC GND 接单片机&#xff0c; VCC 需要接 3.3V &#xff0c; 5V 不行&#xff01; 最大负载电路交流 250V/10A &#xff0c;直流 30V/10A 引脚 IN 接收到 低电平 时&#xff0c;开关闭合。

[论文阅读]BEVFusion

BEVFusion BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework BEVFusion&#xff1a;简单而强大的激光雷达相机融合框架 论文网址&#xff1a;BEVFusion 论文代码&#xff1a;BEVFusion 简读论文 论文背景&#xff1a;激光雷达和摄像头是自动驾驶系统中常用的两…

【数值计算方法(黄明游)】函数插值与曲线拟合(二):三次 Hermite 插值【理论到程序】

​ 文章目录 一、近似表达方式1. 插值&#xff08;Interpolation&#xff09;2. 拟合&#xff08;Fitting&#xff09;3. 投影&#xff08;Projection&#xff09; 二、Lagrange插值1. 拉格朗日插值方法2. Lagrange插值公式a. 线性插值&#xff08;n1&#xff09;b. 抛物插值&…

ISP IC/FPGA设计-第一部分-MT9V034摄像头分析(0)

MT9V034为CMOS图像传感器&#xff0c;有着极其优秀的图像成像性能&#xff0c;同时支持丰富的功能用于isp的开发&#xff1b;MT9V034 的HDR宽动态、10bit数据深度、RAW格式&#xff08;bayer阵列&#xff09;图像、dvp和lvds接口、60fps正是学习isp开发的理想传感器&#xff1b…