reorder-list反转链表

RFSOC实战解析(一):深入RF Data Converter的时钟与数据接口设计 本文深入解析RFSOC中RF Data Converter的时钟与数据接口设计,涵盖GHz采样、数据流处理、时钟树同步及AXI-Stream接口实战。通过详细案例和调试技巧,帮助工程师高效配置IP核,优化ADC/DAC性能,解决跨时钟域和信号完整性等关键问题。 阅读详情

题目描述:

将给定的单链表L: L 0→L 1→…→L n-1→L n,

重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→…

要求使用原地算法,并且不改变节点的值

例如:

对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}.

解题思路:

1、把链表分成两部分,如1->2->3->4->5->null,分成l1 : 1->2->3->null,和l2 : 4->5->null

2、将第二个链表反转, 所以l2  :  5->4->null

3、将2个链表合并

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public void reorderList(ListNode head) {
        //当链表为空,或只有1个2个Node时,不需要反转
        if (head == null || head.next == null || head.next.next == null)
            return;
        ListNode slow = head;
        ListNode fast = head;
        //最终slow指向的位置是reorder之后的最后一个Node
        while(fast != null && fast.next != null){
            slow = slow.next;
            fast = fast.next.next;
        }
        //slow不可能是Null,end2也不会是Null
        //end2指向l2的end node
        ListNode end2 = slow.next;
        //ppre指向要反转的node的前一个node
        ListNode ppre = end2;
        //p指向要反转的node
        ListNode p = ppre.next;
        //pnext指向要反转的node的下一个node,也就是下一个要反转的node
        ListNode pnext = null;
        //p指向null时,反转结束
        while(p != null){
            pnext = p.next;
            p.next = ppre;
            ppre = p;
            p = pnext;
        }
        //反转结束,ppre指向l2的start node
        ListNode start2 = ppre;
        //将两个链表分离,使各自的end node指向null
        end2.next = null;
        slow.next = null;
        //得到了2个链表l1和l2
        ListNode l1 = head;
        ListNode l2 = start2;
        //为连接l1和l2所用,在改变node.next前要记录之前的node.next
        ListNode l1next = null;
        ListNode l2next = null;
        //合并链表
        while(l1 != null && l2 != null){
            l1next = l1.next;
            l2next = l2.next;
            l1.next = l2;
            l1 = l1next;
            l2.next = l1;
            l2 = l2next;
        }
    }
}

 

 

⭐️VMwareWorkstation17.0虚拟机安装搭建Windows 7虚拟机(完整图文详细步骤含配置VMware Tools教程) 本教程为大家提供了从安装VMware Workstation 17.0开始,到在虚拟机上成功搭建Windows 7专业版系统的完整步骤。我们详细介绍了准备阶段所需的软件和硬件要求,以及在VMware中配置和安装Windows 7系统的每一步操作。此外,我们还特别提到了如何在虚拟机上配置VMware Tools,以便更好地与宿主机进行交互。 通过本教程的学习,读者不仅能够掌握在VMware Workstation 17.0上安装Windows 7虚拟机的技能,还能了解到如何配置虚拟机的硬件以及安装VMwar 阅读详情

相关推荐

资产监测设备中130dBm的GPS信号注入天线端口,C/N0一般是多少?

笔者的团队一直从事于资产监测设备的开发,在开发过程中,涉及到很多细节的问题,针对新入职的同事来说较为陌生。同时,在团队外,还有需要对智能硬件终端开发感兴趣的用户。基于此背景下,笔者将在下面的内容主要介绍资产监测设备以及对设备中的GPS相关的问题:130dBm的GPS信号注入天线端口,C/N0一般是多少?作出详细的解答。 资产监测设备概述: 资产监测设备是基于物联网通信技术基础上的智能硬件终端,其主要作用是帮助用户监测资产在仓库、运输途中、交付整个流通环节中,提供资产的实时位置与状态参数。用户只需要登录资产

瑞奇聊通信模组 1229

将给定的单链表\ L L: L_0→L_1→…→L_{n-1}→L_ nL 0​ →L 1​ →…→L n−1​ →L n​ 重新排序为:L_0→L_n →L_1→L_{n-

/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public void reorderList(ListNode head) {.

qq_55151340的博客 1097

嵌入式开发中Tab与空格混用的危害与统一规范实践

在软件工程中,代码格式一致性是保障可读性与团队协作效率的基础。从原理上看,制表符(Tab)与空格(Space)在存储与显示机制上存在本质差异:Tab是控制字符,其显示宽度取决于编辑器设置;空格则是固定宽度的字符。这种差异导致混用时会引发代码对齐错乱、版本控制冲突及跨平台兼容性问题,严重影响工程的可维护性。尤其在嵌入式开发领域,资源受限环境与高可靠性要求使得统一的编码规范更为关键。通过配置编辑器、集成clang-format等自动化工具,可以强制实现缩进风格的一致性,从而提升代码质量与团队协作效率。本文聚焦于

weixin_42545636的博客 275

【LeetCode 算法】Reorder List 重排链表

所以需要知道从哪里拆,可以使用快慢指针,或者是简单遍历计数。还要知道如何反转链表,可以递归,或者是头插,或者是顺序逆转。将所有节点依次入队,然后分别从2端点取节点,完成链接,然后继续从队列中取节点,补在之前的节点后面。不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。只要熟悉双端队列,会操作链表节点插入,基本就可以。仔细观察可以发现,最终的链表是。

Cui's Blog 1093

主板USB接口全部失效解决方案(通用串行总线USB控制器有黄色叹号)保姆级教程亲测有效

通用串行总线控制器总是有叹号解决办法 办公室的崩腾时代老电脑,疫情期间没人用,来了开机之后发现鼠标键盘都用不了,本以为是主机放时间长出了问题,后来想起来就百度了“鼠标键盘都失效”的标题,结果发现了“串行总线控制器总是感叹号”的关联问题。正好办公室电脑都装有teamviwer常用来远程办公(在家偷懒)。所以通过远程发现电脑室可以运行的。并在控制面板发现:通用串行总线控制器总是感叹号,插入外设时USB无反应。如图:​ 并且右键选中其中一个,点击最后一个选项:“属性” 可以发现“设备状态”中会提示“由...

xiao_bai_0_0的博客 2万+

DINOv3 网络结构解析:从 ViT 到 ConvNeXt 的双路线设计

本文深入解析了DINOv3网络结构的双路线设计,包括ViT和ConvNeXt两种主干架构。ViT路线通过轴向旋转位置编码解决了传统ViT对固定分辨率的依赖,而ConvNeXt路线则优化了卷积设计,提升了实时处理能力。文章还探讨了Gram Anchoring、混合自监督目标等关键技术,展示了DINOv3在多任务和多模态应用中的强大潜力。

weixin_29214199的博客 560

将给定的单链表L: L 0→L 1→…→L n-1→L n, 重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→…

要求使用原地算法,并且不改变节点的值 思路:将中点后的链表倒序,将倒序后的链表间隔的插入前面的链表中 1.如何找到一个链表的中点 使用快慢指针,slow每移动一步,fast移动两步 //定义两个指针 ListNode fast=head; ListNode slow=head; while(fast.next!=null&&a...

weixin_43842753的博客 1575

保姆级教程:手把手配置MAX9295/9296 GMSL2-CSI2链路,搞定4LAN/1LAN模式与常见调试

本文提供MAX9295/9296 GMSL2-CSI2链路的详细配置教程,涵盖4LAN和1LAN模式的硬件连接、寄存器配置及调试技巧。通过实战案例和代码示例,帮助开发者快速实现高带宽视频传输,解决常见问题如信号同步和功耗优化,适用于车载摄像头和机器人视觉系统开发。

weixin_42561143的博客 434

reorder-list(重排链表)

问题描述 Given a singly linked list L: L 0→L 1→…→L n-1→L n reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→… You must do this in-place without altering the nodes’ values For example,Given{1,2,3,4}, reorder ...

傻月菇凉的博客 445

Keil开发中CMSIS Driver API缺失问题的排查与解决

本文详细解析Keil开发中CMSIS Driver API缺失问题的根源与解决方案。针对版本不匹配、安装不完整等常见原因,提供在线与离线安装的对比及详细排查步骤,重点涵盖版本兼容性分析与项目配置验证,帮助开发者彻底解决API缺失错误并预防问题复发。

rust6ferris的博客 550

《用 Python 爬取统计局年鉴:从 API 抓取到结构化分析,实战全流程详解》

在数据分析、经济研究、商业决策中,国家统计局发布的年鉴数据具有权威性和参考价值。本篇博客将带你从零实践:了解目标、设计爬虫、抓取年度数据、解析 JSON、保存结构化数据、并用 Pandas 简要分析可视化,且使用现代 Python 最佳实践(如httpx、pydantic、typer 等),提升代码质量与效率。如何抓取国家统计局年鉴数据;利用 API 方式高效获取;使用现代异步 Python 提升性能;将数据结构化输出;结合 CLI、类型校验和简单分析技术提升实用性。

2201_76125261的博客 1085

Reorder List(链表重排序)

leetcode 143. Reorder ListGiven a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes’ values.For example, Given {1,2,3,4

走好每一步! 510

Android 12.0 framework系统修改安兔兔等显示的屏幕尺寸大小功能实现

在12.0的系统rom定制化开发中,在使用第三方app检测系统的一些信息中,比如安兔兔 设备信息等检测app中,有时候显示的屏幕尺寸大小和 产品规格书等信息不同,稍微有些差异,所以就需要看下系统framework层中,相关的设备信息是怎么读出来的,然后做些调整 接下来就来分析相关功能

安卓兼职framework和app工程师的博客 476

Reorder List:穿插反转链表

Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You may not modify the values in the list's nodes, only nodes itself may be changed.Example 1:Given 1->2->3-&g...

小雄鹿的博客 302

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

234. 回文链表 Palindrome Linked List 143. 重排链表Reorder List 92. Reverse Linked List II【 反转链表 2】

问题 请判断一个链表是否为回文链表 例子 思路 []是 [1]是 [1,2,1]是 [1,2,2,1]是 先判断[]和[1],都返回true 方法1 空间复杂度O(n) 先遍历链表,保存值到数组 然后按判断字符串回文方式:前后两个指针,向中间走 确保i<j:奇数个,跳出循环时:i==j,偶数个跳出循环时:i>j 方法2 空间复杂度O(1) 遍历链表,将后一半反转,比较前...

puspos的博客 170

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode中几道链表反转相关题目(Reorder List、Rotate List、Reverse Nodes in k-Group)

三道很常见的面试题,reorderList

fmt.Println( 3936

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LeetCode Reorder List

将单向链表L0→L1→…→Ln-1→Ln转化为L0→Ln→L1→Ln-1→L2→Ln-2→…的形式,也就是从头部取一个节点,从尾部取一个节点,直到将原链表转化成新的链表。

DRFish 2199

[Leetcode Week6]Reorder List

Reorder List 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/reorder-list/description/ Description Given a singly linked list L: L0?L1?…?Ln-1?Ln, reorder it to: L0?Ln?L1?Ln-1?L2?Ln-2?… You must do th...

weixin_30500663的博客 124

143. Reorder List

/* * 143. Reorder List * 11.28 by Mingyang 总体思想就是后半部分reverse然后再merge */ public void reorderList(ListNode head) { if (head == null) return; ...

weixin_30510153的博客 62

【LeetCode】143. Reorder List 解题报告(Python)

【LeetCode】143. Reorder List 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.me/ 题目地址:https://leetcode.com/problems/reorder-list/descri...

负雪明烛 2896

Leetcode 143. Reorder List (Medium) (cpp)

Leetcode 143. Reorder List (Medium) (cpp)

还是需要多学习!闷声大发财,这是坠吼的! 418

Leetcode 143 Reorder List

Leetcode 143 Reorder List 题目:Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… 原题链接 /** * Definition for singly-linked list. * struct ListNode { * int val; ...

UPUP&TOPTOP 182

LeetCode知识点总结 - 143

把list分成两半 -> 把后一半前后颠倒顺序 -> 两半merge。

m0_59773145的博客 55

【小白笔记】重排链表(Reorder List)

pre_slow是 previous_slow的缩写,中文意思是慢指针的前驱(前一个节点)。知识点考察内容分治思想将复杂问题(重排)拆解为三个经典子问题。快慢指针如何高效地找到链表的中间位置。链表反转熟练掌握O1O(1)O1空间复杂度的迭代法反转。双指针合并如何在不创建新节点的情况下,利用指针交替将两个链表拼接起来。这道题是检验链表操作能力的优秀综合题。分析的是重排链表(Reorder List)的核心第三步:交替合并。这段代码是整个算法中最精彩、最考验指针操作的部分。这段代码的核心是。

weixin_70325224的博客 1096

【链表】reorder list

大致思路: 我之前是想着,用栈来存储倒置的链表,然后再以结点数作为while条件来依次地插入。可是超时了。因为别人题解里也有这种做法,但是有通过,看了一下,可能原因出在“别人找了链表的中点,只是用栈存储了链表的后半部分”,而我是栈存储全部部分。 看了题解受到启发,用了另一种方法:化解为熟悉的三个小题(感觉这种思想不错哦!): ① 找到链表中点,拆成两个链表 ② 反转后半部分的那个链表 ...

It's the Climb 181

143. Reorder List 重排链表

给定一个单链表&nbsp;L:L0&rarr;L1&rarr;&hellip;&rarr;Ln-1&rarr;Ln , 将其重新排列后变为: L0&rarr;Ln&rarr;L1&rarr;Ln-1&rarr;L2&rarr;Ln-2&rarr;&hellip; 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例&nbsp;1: 给定链表 1-&gt;2-&gt;

Alex 760
上一篇: maximum-depth-of-binary-tree二叉树的最大深度
下一篇: 二叉树的最小深度
PMPWDF
博客等级 码龄10年 44粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值