每日两题 / 24. 两两交换链表中的节点 25. K 个一组翻转链表(LeetCode热题100)

news2024/10/5 13:17:42

24. 两两交换链表中的节点 - 力扣(LeetCode)
image.png

定义三个指针,交换前先保存ntnt指针为next->next,cur和next两个节点,然后将pre->next指向next
若pre为空,说明当前交换的节点为头两个节点,不需要修改pre->next
若cur不为空而next为空,则将pre->next指向cur
然后根据ntnt更新三个节点,当cur或者next为nullptr时,终止交换

/**
 * 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:
    ListNode* swapPairs(ListNode* head) {
        ListNode *pre = nullptr;
        ListNode *cur = head, *next = nullptr;
        if (cur) next = cur->next;
        if (next) head = next;
        while (next && cur)
        {
            ListNode *ntnt = next->next;
            next->next = cur; cur->next = nullptr;
            if (pre) pre->next = next;
            pre = cur, cur = ntnt;
            if (cur) next = cur->next;
        }
        if (pre && cur && (next == nullptr)) pre->next = cur;
        return head;
    }
};

25. K 个一组翻转链表 - 力扣(LeetCode)
image.png

先统计俩表中节点的数量n,需要翻转(n / k)组链表
使用哨兵new_head作为伪头节点
记录上一次k组的尾节点,初始为new_head
翻转完一组节点,将尾节点的next指向刚才翻转一组节点的头节点
对于每组节点的翻转,使用三个指针,将pre->cur修改cur->pre,再用next更新两个指针(pre = cur,cur = next)
每个子链表需要翻转k - 1次,一共需要翻转n / k组
最后,若k不能整除n,那么将上一组节点的尾节点next指向剩下节点的头节点
若k能整除n,那么将上一组节点的尾节点next指向nullptr

/**
 * 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:
    ListNode* reverseKGroup(ListNode* head, int k) {
        int n = 0;
        ListNode *cur = head;
        while (cur)
        {
            cur = cur->next;
            n ++ ;
        }
        ListNode *new_head = new ListNode;
        ListNode *pre = head;
        ListNode *hhead = nullptr, *tail = new_head;
        if (pre) cur = pre->next;
        for (int i = 0; i < n / k; ++ i)
        {            
            ListNode *new_tail = pre;
            for (int j = 0; j < k - 1; ++ j)
            {
                ListNode *next = cur->next;
                cur->next = pre;
                pre = cur, cur = next;
            }
            hhead = pre, tail->next = hhead, tail = new_tail;
            if (cur) pre = cur, cur = cur->next;
        }
        if (n % k) tail->next = pre;
        else tail->next = nullptr;
        return new_head->next;
    }
};

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

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

相关文章

网络相关笔记

IPv4地址 IPv4地址通常以“点分十进制”形式书写&#xff0c;即四个0-255之间的十进制数&#xff0c;各数之间用英文句点&#xff08;.&#xff09;分隔&#xff0c;例如&#xff1a;192.0.2.1。总共32位的地址空间可以表示大约42亿个不同的地址。 IPv4地址结构包括&#xff…

金石传拓非遗研学基地 入驻蔚蓝书店

好消息&#xff01;&#xff01;&#xff01; 金石传拓非遗研学基地&#xff0c;正式入驻蔚蓝书店啦&#xff01;&#xff01;&#xff01; “缣竹易销&#xff0c;金石难灭&#xff0c;托以高山&#xff0c;永留不绝。”“金”指的是三代青铜器上的铭文。 “石”指的是石刻、…

PCIE协议-2-事务层规范---事务描述符

2.2.6.1 概览 事务描述符是请求者和完成器之间传输事务信息的机制。事务描述符由三个字段组成&#xff1a; 事务ID&#xff1a;标识未完成的事务属性字段&#xff1a;定义事务的特征流量类别&#xff08;TC&#xff09;字段&#xff1a;将事务与所需的服务类型关联起来 图2-…

PG的事务ID回卷逻辑

PG到目前为止使用的事务ID仍然是32位的&#xff0c;在内存计算时虽然已经使用64位事务ID&#xff0c;但是存储在页中tuple仍然使用32位事务ID&#xff0c;这就是说&#xff0c;事务ID回卷仍然是必须处理的问题。 所谓PG事务ID回卷&#xff0c;简单地说&#xff0c;就是在数据库…

LIN协议栈代码解读,纯干货

LIN协议栈概述 当前用的比较多的LIN协议栈&#xff0c;如果不是VECTOR平台的&#xff0c;那就是NXP的LIN协议栈。NXP的协议栈又分为两套&#xff0c;一套是独立工具生成配置文件&#xff0c;即STACK_Package_4.5.9&#xff0c;通过NCFGui生成配置文件&#xff0c;主要用在MC9S…

python数据分析——数据预处理

数据预处理 前言一、查看数据数据表的基本信息查看info&#xff08;&#xff09;示例 查看数据表的大小shape&#xff08;&#xff09;示例 数据格式的查看type()dtype&#xff08;&#xff09;dtypes&#xff08;&#xff09;示例一示例二 查看具体的数据分布describe()示例 二…

【matlab基础知识代码】(十六)代数方程的图解法多项式型方程的准解析解方法

>> ezplot(exp(-3*t)*sin(4*t2)4*exp(-0.5*t)*cos(2*t)-0.5,[0 5]), line([0 5],[0 0]) 验证 >> t0.6738; >> exp(-3*t)*sin(4*t2)4*exp(-0.5*t)*cos(2*t)-0.5 ans -2.9852e-04 >> ezplot(x^2*exp(-x*y^2/2)exp(-x/2)*sin(x*y)) >> hold on; …

Java数组(如果想知道Java中有关数组的知识点,那么只看这一篇就足够了!)

前言&#xff1a;数组对于每一门编程语言来说都是重要的数据结构之一&#xff0c;当然不同语言对数组的实现及处理也不尽相同,Java 语言中提供的数组是用来存储固定大小的同类型元素。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSD…

MOSFET数据手册你会看了吗?

目录 一、功率损耗Power dissipation ​编辑二、结温Junction temperature 三、热阻Thermal resistance 四、寄生电容Cisis/Coss/Crss 五、开关时间 Time 一、功率损耗Power dissipation 功率损耗主要分为两类&#xff1a;静态损耗和动态损耗。静态损耗主要由器件的导通电…

wordpress忘记后台密码,在数据库中修改回来,然后再修改回去。

源地址&#xff1a;https://www.ctvol.com/seoomethods/1421332.html 我们在做wordpess运维的时候&#xff0c;都会遇到很尴尬的时候&#xff0c;有时候在错误运维中&#xff0c;不知道删除了什么东西&#xff0c;造成wordpress后台不能登录&#xff0c;后台页面也直接失效&am…

【Web后端】web后端开发简介_Servlet简介

1.web后端开发简介 Java企业级开发&#xff0c;也就是学习]avaEE(Enterprise Edition)版本,是一种结构和一套标准。在应用中开发的标准就是Servlet、jsp和JavaBean技术。jsp技术现在已基本处于淘汰状态&#xff0c;简单了解即可web后端开发&#xff0c;基于B/S模式的开发体系。…

日本站群服务器提升网站用户体验的选择

日本站群服务器提升网站用户体验的选择 在当今数字化时代&#xff0c;网站的性能和用户体验对于在线业务的成功至关重要。为了确保网站能够提供快速、可靠和高效的访问体验&#xff0c;越来越多的网站管理员和企业选择了使用站群服务器。本文将深入探讨日本站群服务器的独特优…

CogVLM 本地部署体验(问题解决)

硬件要求&#xff08;模型推理&#xff09;&#xff1a; INT4 &#xff1a; RTX30901&#xff0c;显存24GB&#xff0c;内存32GB&#xff0c;系统盘200GB INT4 &#xff1a; RTX40901或RTX3090*2&#xff0c;显存24GB&#xff0c;内存32GB&#xff0c;系统盘200GB 模型微调硬件…

在k8s中部署Prometheus并实现对k8s集群的监控

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Prometheus&#xff1a;监控的神》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、k8s简介 2、 Prometheus概述 二、准备k8s环境 1、…

游戏新手村24:游戏数据分析的思路及方法

在手机游戏和友盟统计、百度统计诞生之前&#xff0c;很多的游戏公司都是团队自己开发相关的数据统计平台&#xff0c;设定不同的角色和权限&#xff0c;满足业务部门同事的需要&#xff0c;为运营决策提供支持和依据。 近两年手机游戏和移动APP兴起&#xff0c;友盟统计和百度…

Java自动化测试框架--TestNG详解

一. 什么是TestNG TestNG是一个开源的自动化测试框架&#xff0c;它受JUnit和NUnit启发&#xff0c;其中“NG”即表示Next Generation&#xff0c;其功能更强大使用更方便。 二. TestNG配置 2.1 POM文件配置 在maven工程的pom.xml文件中加入以下依赖&#xff1a; <depe…

C语言-设置控制台信息

Win_API Win_API是Windows应用程序接口&#xff08;Windows Application Programming Interface&#xff09;的缩写&#xff0c;它是一组函数、系统服务和程序接口&#xff0c;允许开发者在微软Windows操作系统上创建应用程序。Win32 API 是Windows API的一个主要部分&#xff…

【题解】非对称之美(规律)

https://ac.nowcoder.com/acm/problem/214851 #include <iostream> #include <string> using namespace std; string s; int n; int fun() {// 1. 判断是否全都是相同字符bool flag false;for (int i 1; i < n; i) {if (s[i] ! s[0]){flag true;break;}}if…

【小白的大模型之路】基础篇:Transformer细节

基础篇&#xff1a;Transformer 引言模型基础架构原论文架构图EmbeddingPostional EncodingMulti-Head AttentionLayerNormEncoderDecoder其他 引言 此文作者本身对transformer有一些基础的了解,此处主要用于记录一些关于transformer模型的细节部分用于进一步理解其具体的实现机…

ros 学习记录(二)URDF小车运动控制

URDF小车运动控制 准备工作创建 robot_xacro.launch 接上文&#xff0c;想用键盘控制小车在Gazebo中移动。 准备工作 名称版本ROSNoeticGazebo11.11.0 创建 robot_xacro.launch 通过运行这个launch文件&#xff0c;可以启动Gazebo仿真环境&#xff0c;并在仿真环境中加载和…