LeetCode LCR 026. 重排链表

news2024/10/5 22:14:54

LCR 026. 重排链表
中等
128
相关企业
给定一个单链表 L 的头节点 head ,单链表 L 表示为:

L0 → L1 → … → Ln-1 → Ln
请将其重新排列后变为:

L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:
在这里插入图片描述

输入: head = [1,2,3,4]
输出: [1,4,2,3]
示例 2:

在这里插入图片描述

输入: head = [1,2,3,4,5]
输出: [1,5,2,4,3]

提示:

链表的长度范围为 [1, 5 * 104]
1 <= node.val <= 1000

题解

相当于把链表的后面半段翻转后,和前面半段交替连接。

于是需要利用快慢指针找到中间的节点,然后再写个反转。

AC代码

/**
 * 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:
    void reorderList(ListNode* head) 
    {
        if(head->next==NULL)return;
        ListNode* H = new ListNode(0);
        H->next = head;
        ListNode * slow;
        ListNode * fast;
        ListNode * cur;
        slow = head;
        fast = head;
        while(slow!=NULL&&fast!=NULL)
        {
            cur = slow;
            slow = slow->next;
            fast = fast->next;
            if(fast!=NULL)
            {
                fast = fast->next;
            }
        }
        cur->next = NULL;
        //cout<<cur->val<<endl;
        //翻转slow开始的节点
        ListNode * nex = slow->next;
        ListNode * last = slow;
        last->next=NULL;
        while(nex!=NULL)
        {
            slow = nex;
            nex = nex->next;
            slow->next = last;
            last = slow;
        }
        ListNode *p1 = H->next;
        ListNode *p2 = slow;
        ListNode *p = H;
        while(p1!=NULL&&p2!=NULL)
        {
            //cout<<p1->val<<" "<<p2->val<<endl;
            p->next = p1;
            p = p->next;
            p1 = p1->next;

            p->next = p2;
            p = p->next;
            p2 = p2->next;
            
        }
        while(p1!=NULL)
        {
            p->next = p1;
            p1 = p1->next;
        }
        head = H->next;
    }
};

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

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

相关文章

服务拓扑串联难?eBPF为滴滴可观测带来解题新思路

上篇文章我们讲到可观测性在滴滴的实践与落地&#xff0c;更多关注的是不同观测信号之间的关联关系。那服务与服务之间的关系又如何串联&#xff0c;业界当前爆火的 ebpf 又在滴滴有着怎样的应用&#xff0c;本文为你揭晓。 背景 业务介绍&#xff1a;业务接口调用观测 滴滴可观…

基于Linux对MySQL数据库的安全加固指南(超实用--实战版)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

零基础学前端(四)重点讲解 CSS

1. 该篇适用于从零基础学习前端的小白 2. 初学者不懂代码得含义也要坚持模仿逐行敲代码&#xff0c;以身体感悟带动头脑去理解新知识 3. 初学者切忌&#xff0c;不要眼花缭乱&#xff0c;不要四处找其它文档&#xff0c;要坚定一个教授者的方式&#xff0c;将其学通透&#xff…

柏曼的护眼台灯怎么样?明基、书客、柏曼护眼台灯测评对比

台灯是最常见的一种照明灯具&#xff0c;基本每家每户都有着一台&#xff0c;大多数是给孩子学习使用的。而且现在的孩子学习压力都非常繁重&#xff0c;导致很多孩子早早就开始近视了。不少家长也开始重视孩子的视力健康&#xff0c;给孩子挑选护眼台灯。不过市面上的护眼台灯…

抖去推爆款视频生成器怎么制作开发?--短视频矩阵系统研发

在当今的数字时代&#xff0c;短视频已经成为一种非常受欢迎的内容形式。人们通过观看短视频来获取娱乐、学习和营销信息。然而&#xff0c;制作优秀的爆款视频并不容易&#xff0c;这需要创意、技能和时间。为了简化这一过程&#xff0c;抖去推推出了一款爆款视频生成器&#…

无CDN场景下的传统架构接入阿里云WAF防火墙的配置实践

文章目录 1.配置网站接入WAF防火墙1.1.配置网站接入方式1.2.填写网站的信息1.3.WAF防火墙生成CNAME地址 2.配置WAF防火墙HTTPS证书3.修改域名DNS解析记录到WAF防火墙4.验证网站是否接入WAF防火墙 传统架构接入WAF防火墙非常简单&#xff0c;配置完WAF网站接入后&#xff0c;将得…

KPM算法

概念 KMP&#xff08;Knuth–Morris–Pratt&#xff09;算法是一种字符串匹配算法&#xff0c;用于在一个主文本字符串中查找一个模式字符串的出现位置。KMP算法通过利用模式字符串中的重复性&#xff0c;避免无意义的字符比较&#xff0c;从而提高效率。 KMP算法的核心思想是…

【持续记录】深度学习环境配置

1080面对Transformer连勉强也算不上了&#xff0c;还是要去用小组公用的卡 完整记一个环境配置&#xff0c;方便后面自用✍️ nvidia-smi查看GPU信息 ** CUDA版本12.2 conda -V查询conda版本 22.9.0 新建conda环境 准备装python3.8 conda create --name caiman python3.8.2激…

Apollo自动驾驶平台的未来展望:从智能出行到城市管理

引言&#xff1a; 自动驾驶技术已经从科幻概念变为现实&#xff0c;而Baidu的Apollo自动驾驶平台正处于这一技术浪潮的前沿。但Apollo的潜力远远不止于此&#xff0c;它有可能引领整个城市的未来发展。本文将探讨Apollo自动驾驶平台在未来的展望&#xff0c;从智能出行到城市管…

VS Code用AI写代码:Codeium插件

文章目录 Codeiumchat代码生成 Codeium Codeium是基于边缘计算的代码AI工具&#xff0c;提供超过70种编程语言的代码补全、对话、搜索等功能&#xff0c;相当霸道。 在插件栏搜索到Codeium之后&#xff0c;需要科学上网安装&#xff0c;安装完成后会提示注册。注册之后&#…

这应该是Linux用户与用户组最详细的知识了吧!

【微|信|公|众|号&#xff1a;厦门微思网络】 Linux学习专栏​ 1、用户和用户组文件 在 linux 中&#xff0c;用户帐号&#xff0c;用户密码&#xff0c;用户组信息和用户组密码均是存放在不同的配置文件中的。 在 linux 系统中&#xff0c;所创建的用户帐号和其相关信息 (密…

考虑可再生能源消纳的建筑综合能源系统日前经济调度模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

基于智能远程监考方案,云上组考打造考试新范式

热潮兴起&#xff0c;「云上组考」是怎样炼成的&#xff1f; 疫情以来&#xff0c;改变了很多场景形态&#xff0c;“考试”是其中之一。 越来越多的学校开始采用云上组考模式&#xff0c;提高考试效率&#xff0c;节省人力、物力成本&#xff0c;规范考试管理&#xff0c;引发…

掌握Linux服务器:构建、管理和优化稳健的互联网基础设施

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 引言 Linux服务器是构建…

基于SpringBoot+Vue+MySQL实现的高校固定资产管理系统源代码+数据库

基于 Vue 和 SpringBoot 的高校固定资产管理系统 完整代码下载地址&#xff1a;高校固定资产管理系统 软件简介 基于 Vue 和 SpringBoot 的高校固定资产管理系统&#xff0c;用于实现高校对固定资产的管理需求&#xff0c;包含资产品类、资产单位、资产仓库、资产供应商、资…

分布式文件系统的新兴力量:揭秘Alluxio的元数据管理机制【文末送书】

文章目录 写在前面01 分布式文件系统元数据的常见类型1.1 文件&#xff08;inode&#xff09;元数据1.2 数据块&#xff08;block&#xff09;元数据1.3 Worker元数据 02 分布式文件系统元数据的存储模式2.1 元数据存储在堆上&#xff08;HEAP模式&#xff09;2.2 元数据存储在…

智安网络|提升企业网络安全:避免成为勒索软件攻击的目标

勒索软件是当前网络世界中一种威胁严峻的恶意软件类型&#xff0c;勒索软件攻击近年来不断增加&#xff0c;越来越多的企业成为勒索软件攻击的目标。这种攻击方式通过加密敏感数据&#xff0c;并勒索企业支付赎金以解锁数据&#xff0c;给企业造成严重的经济损失与声誉风险。企…

GDB之call、print手动调用函数(十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

SSM - Springboot - MyBatis-Plus 全栈体系(八)

第二章 SpringFramework 四、SpringIoC 实践和应用 4. 基于 配置类 方式管理 Bean 4.4 实验三&#xff1a;高级特性&#xff1a;Bean 注解细节 4.4.1 Bean 生成 BeanName 问题 Bean 注解源码&#xff1a; public interface Bean {//前两个注解可以指定Bean的标识AliasFor…

【计算机视觉 | 图像模型】常见的计算机视觉 image model(CNNs Transformers) 的介绍合集(六)

文章目录 一、Co-Scale Conv-attentional Image Transformer&#xff08;CoaT&#xff09;二、Pyramid Vision Transformer v2(PVTv2)三、Class-Attention in Image Transformers&#xff08;CaiT&#xff09;四、PoolFormer五、ScaleNet六、VoVNet七、Siamese U-Net八、Single…