【面试系列】重排链表

2023-10-26

题意:
原题链接

思路:

  • 快慢指针找到中点(或者先遍历得到长度,再遍历一半也可行)
  • 反转后半部分
  • 归并两部分

代码:

/**
 * 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* reverseList(ListNode* head) {
        if(head == NULL || head->next == NULL) return head;
        ListNode *next_tail = head->next;
        ListNode *next_head = reverseList(head->next);
        next_tail->next = head;
        head->next = NULL;
        return next_head;
    }
    
    void reorderList(ListNode* head) {
        ListNode *dummy = new ListNode(-1);
        dummy->next = head;
        ListNode *quick = dummy, *slow = dummy;
        while(quick) {
            if(quick) quick = quick->next;
            if(quick) quick = quick->next;
            if(slow) slow = slow->next;
        }
        ListNode *second = reverseList(slow->next);
        ListNode *first = head;
        slow->next = NULL;
        
        ListNode *tmp = dummy;
        while(first) {
            tmp->next = first;
            tmp = tmp->next;
            first = first->next;
            if(second) {
                tmp->next = second;
                tmp = tmp->next;
                second = second->next;
            }
        }    
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【面试系列】重排链表 的相关文章

  • css样式表的作用和意义,什么是CSS?

    CSS是大家很熟悉的一个词了 但是如果问你 什么是CSS 你能回答得出吗 到底什么是CSS CSS有什么作用 CSS长什么样子 今天我们就给大家一一解答 CSS全称为Cascading Style Sheets 层叠样式表 中文翻译为 层叠
  • SUSE linux 使用LVM安装系统和管理

    引出 在我们安装好linux系统后会发现在需要修改磁盘分区的时候会比较困难 系统安装的 目录的文件系统要更改基本不太可能 其他目录如 home目录也比较困难 但是系统安装时要是采用的LVM管理的方式安装的话就会截然不通 一 首先普及下LVM
  • 嵌入式python智能实训总结_嵌入式智能家居心得体会 智能家居实训报告2000字

    家里装全套智能家居是一种什么体验 男士体验 5 半年后 我们发现有一篇回到第一篇文章 女性体验 第一篇 嗯 半夜哺乳 不用涂抹 第二篇 睡觉时忘记关灯 不要踢老公 第三 可以随时检查宝宝的状态 而且你可以监控老公是否不在家 第四 出行时 不
  • 软件测试之白盒测试

    白盒测试 一 白盒测试定义 白盒测试 又称结构测试 是在已知程序的内部工作过程的情况下 用来测试程序的内部结构 并判定其结果是否与预期的结果一致 一般说来 白盒测试相对简单 因为白盒测试是在已知程序的内部工作流程的情况下进行的 而且白盒测试
  • GIT常用命令以及使用详解图示

    1配置个人信息 方便提交代码管理 获取Git配置信息 执行以下命令 git config list 如果你还没有设置名字 user name 和 user email的话 可以用以下指令设置 git config global user n
  • 两种方法教你在postman设置请求里带动态token

    postman传递动态参数的最佳实践 问题描述 一 设置全局 环境变量传递 在postman中新增一个环境变量devToken 将获取到的token赋值给devToken 其他请求接口根据需要在请求时带上devToken 二 在每个请求中带
  • JAVA通过反射调用外部的jar包

    把外包jar的信息写在配置文件中 这样如果外部jar改变了 只需要修改properties相应的配置即可 config properties文件内容如下 jarUrl E MessageSend jar className org line
  • 高速USB转8串口产品设计-RS485串口

    基于480Mbps 高速USB转8路串口芯片CH348 可以为各类主机扩展出8个独立的串口 使用厂商提供的VCP串口驱动程序 可支持Windows Linux Android macOS等操作系统 使用单个CH348芯片即可实现USB一拖八
  • 离线 安装webssh

    1 安装包 和 webssh 代码准备 1 cmake 安装 安装参考文档 文档地址 下载地址 tar xvfz cmake 3 24 2 linux x86 64 tar gz 配置环境全局变量 vim etc profile 添加 ex

随机推荐

  • shell脚本初学(带参脚本传递、执行)(二)

    一 带有参数的shell脚本 脚本内获取参数的格式为 n n 代表一个数字 1 为执行脚本的第一个参数 2 为执行脚本的第二个参数 其中 0 为执行的文件名 包含文件路径 bin bash 指定编译器 test sh文件 echo Shel
  • C/C++和Python混合编程

    1 首先需要下载python源代码进行编译 源代码编译的过程访问如下链接 编译python源码 2 创建一个win32控制台项目 项目名称为 InvokePython 如图 3 然后将python源代码中的Include文件夹拷贝到该项目
  • 天线长度计算

    首先 理想天线的长度是半波长 平时说的四分之一波长天线 实际上需要考虑 地 才能构成完整的天线 也就是我们常说的 非平衡天线 天线本身只是天线的一部分 天线长度是波长的四分之一 波长 光速c 频率f 1 如 5GHz wifi天线长度计算
  • 二进制转换

    我们平时使用的十进制 十进制转二进制 整数情况 11表示成二进制数 11 2 5 余 1 5 2 2 余 1 2 2 1 余 0 1 2 0 余 1 得0结束 11的二进制表示为 从下往上 1011 小数情况 0 9表示成二进制数 0 9
  • DLNA协议

    一 DLNA协议 多屏互动技术的核心 dlna协议 利用网络技术 有线或者无线 将各种各样的设备互联 通过标准的协议 主流的是dlna协议 进行数据交互 实现媒体资源共享 比如 生活中常用的视频投屏技术 dlna协议提供的是设备互联资源共享
  • 2022 第十三届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解

    2022 第十三届蓝桥杯大赛软件赛决赛 国赛 C C 大学B组题解 文章目录 第1题 2022 5分 第2题 钟表 5分 第3题 卡牌 10分 第4题 最大数字 10分 第5题 出差 15分 第6题 费用报销 15分 第7题 故障 20分
  • 【进程间通信 之 通信的建立】

    目录 前言 进程间通信的目的 进程间通信的方式 管道 1 匿名管道 简单示例1 消息传输 五个特性 四种场景 简单示例2 进程控制 对管道的深入理解 2 命名管道 简单示例3 不相关进程间通信 system V 共享内存 简单示例4 通知事
  • loadrunner11目标场景

    目标场景 设置一个运行目标 通过Controller的自动加载功能进行自动化负载 如果测试的结果达到目标 说明系统的性能符合测试目标 否则就提示无法达到目标 编辑目标场景 目标类型有5种
  • python-图像边缘化处理

    本文由本人原创 仅作为自己的学习记录 主要利用Sobel 用作边缘检测 它是一离散性差分算子 用来运算图像亮度函数的灰度值 在图像的任何一点使用此算子 将会产生对应的灰度矢量或是其法矢量 Sobel边缘检测通常带有方向性 可以只检测竖直边缘
  • 【Linux0.11 源码历险记 2】《保护模式》

    继续跟着stup s 来看 lidt idt 48 load idt with 0 0 lgdt gdt 48 load gdt with whatever appropriate idt 48 word 0 idt limit 0 wor
  • 【Unity】 2D 游戏 库存模块实现

    库存模块主要参考了 youtube 上的视频 BMo 的 Flexible INVENTORY SYSTEM in Unity with Events and Scriptable Objects 和 Simple Inventory UI
  • DVWA SQL injection

    low 猜测表名 1 union select 1 group concat table name from information schema tables where table schema dvwa 如果出现问题 到MySQL里将
  • Java常用对象API——基本数据类型对象包装类

    基本数据类型对象包装类 为了方便操作基本数据类型值 将其封装成了对象 在对象中定义了属性和行为丰富了该数据的操作 用于描述该对象的类就称为基本数据类型对象包装类 byte Byte short Short int Integer long
  • EXCEL中数据透视表的(空白)如何不显示,并且不影响数据更新

    或许有碰到同样问题的 希望对大家有所帮助 1 数据透视表更新过来的数据显示 空白 不好看 开始将用户做了筛选 将空白的复选框去掉 可以达到效果 但是发现有数据更新时 新的数据不能被同步显示 除非手动去再次筛选用户将除空白外的数据勾选 2 点
  • Ble Mesh的Heatbeat(心跳)&地址&Model(模型)

    心跳 将节点配置为定期发送称为心跳消息的消息 Heartbeat 消息的目的 1 表示该节点仍然处于活动状态 2 允许根据传递 Heartbeat 消息所需的跳数确定其与接收者的距离 Heartbaeat的opcode 和Friend re
  • 主存储器的基本组成

    主存储器的基本组成 存储体 存储体也叫存储矩阵 是由一个个存储0或1的记忆单元 存储元 构成的 为了存取存储体中的信息 必须对存储单元进行编址 编址单位是指具有相同地址的那些存储元件构成的一个单位 常见有按字节编址 寻址访存 CPU首先把被
  • C#集合(泛型集合与非泛型)

    每日一句 自律 努力 方法 坚持 时间 优秀 集合特点 一种数据容器 一种数据结构 容纳多个数据 大小可变 空间不一定连续 命名空间 非泛型集合 System Collections 非泛型集合 System Collections Gen
  • 动态博客系统

    Halo 是我折腾过的众多博客系统里面 最好 最容易上手的动态博客系统之一 solo 也是 轻快 简洁 功能强大 正文 上周末正在募集团队一起写算法题 群里讨论需要一个网站来存放文章 恰巧我有一个已经备案但闲置的域名 马上开干 之前的网站是
  • 解惑React之this.setState({ [name]: value })

    react之this setState name value 疑问 学习React中文官方文档中的非空组件与受控组件中 遇到如下代码 class Reservation extends React Component constructor
  • 【面试系列】重排链表

    题意 原题链接 思路 快慢指针找到中点 或者先遍历得到长度 再遍历一半也可行 反转后半部分 归并两部分 代码 Definition for singly linked list struct ListNode int val ListNod