面试题17:合并两个排序的链表

人工势场法在自动驾驶避障中的实践与优化 本文深入探讨了人工势场法在自动驾驶避障中的核心原理与实践优化。通过解析引力与斥力模型,揭示了经典算法在局部最优和目标不可达等问题上的局限性,并重点介绍了改进斥力场函数、引入道路边界斥力及动态参数调整等关键优化策略,有效提升了该局部路径规划算法在复杂动态场景下的实用性与鲁棒性。 阅读详情

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的。

链表的定义如下:

struct ListNode{
    int value;
    ListNode* next;
    ListNode(int data=int()):value(data),next(NULL)
    {}
};

分析

这是典型的链表归并问题。因为两个链表都是排好序的,所以我们只需要初始化两个指针,分别指向两个链表的第一个节点。并在一个循环中比较两个节点的value值,将较小的摘下来放到新链表中去。在循环结束时,肯定会有一个指针走到了其对应链表的尾部,而另一个还没有走到尾部。所以需要将这些节点加入到新链表中去。

代码如下:

ListNode* Merge(ListNode* head1,ListNode* head2)
{
    if(head1==NULL)
        return head2;
    if(head2==NULL)
        return head1;
    ListNode* newhead=NULL;
    ListNode* tail=NULL;
    ListNode* tmp=NULL;
    while(head1!=NULL && head2!=NULL)
    {
        if(head1->value > head2->value)
        {
            tmp=head2;
            head2=head2->next;
        }
        else
        {
            tmp=head1;
            head1=head1->next;
        }
        if(newhead==NULL)
        {
            newhead=tmp;
            tail=tmp;
        }
        else
        {
            tail->next=tmp;
            tail=tail->next;
        }
    }
    while(head1!=NULL)
    {
        if(newhead==NULL)
        {
            newhead=head1;
            tail=head1;
        }
        else
        {
            tail->next=head1;
            tail=tail->next;
        }
        head1=head1->next;
    }
    while(head2!=NULL)
    {
        if(newhead==NULL)
        {
            newhead=head2;
            tail=head2;
        }
        else
        {
            tail->next=head2;
            tail=tail->next;
        }
        head2=head2->next;
    }
    tail->next=NULL;
    return newhead;
}

以上

如果你有任何想法或是可以改进的地方,欢迎和我交流!

完整代码及测试用例在github上:点我前往

[pcie]gen6 下 L0p 000b~100b: 触发L0p 操作流程协商工作link width 到target link width.为111b:link width 硬件动态调整。硬件动态:Device control 3 register.target link width=111b当pcie链路检测到空闲状态时,设备可以主动进入L0p状态。L0p 是pcie gen6 新引入的链路状态,是L0的子状态。(5)LINK WIDTH:当LINK WIDTH CHANGE.cmd为Request时表示请求的链路宽度。 阅读详情

相关推荐

MMI分束器仿真优化:用Lumerical FDTD实现95%耦合效率的实战技巧

本文详细介绍了使用Lumerical FDTD软件对MMI分束器进行仿真优化的实战技巧。通过构建高保真模型、精确配置光源与边界条件,并重点优化波导结构与taper设计,系统性地将器件的耦合效率提升至95%以上。文章还分享了利用参数扫描、varFDTD加速等高级方法,帮助硅光芯片设计工程师高效实现高性能MMI分束器设计。

rainy的博客 772

合并两个排序的链表(剑指offer 25)Java

一、题目描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 二、思路讲解 两个指针分别从两个链表的头出发, 哪个节点的值小,就把他加到公共节点的后面。等某一个链表遍历完之后,就把没遍历完的链表直接放到公共链表的后面。 由于题...

m0_49499183的博客 366

PSM倾向匹配详细步骤和程序

目录1.安装psmatch2统计包。2.数据准备3.数据分析及命令解读4.结果解读4.1模型拟合结果,此处无太多实际意义。4.2试验组可匹配的观测概览,按照命令中设定的匹配规则,试验组有8例患者未能匹配到合适对照。4.3结果解读的重点应该是对stata新生成的中间变量的解读。4.4均衡性检验结果4.5匹配结果的图示化5.Stata命令汇总最后留下两个问题给大家思考:题目 试验设计中,匹配的目的在于确保干预效应估计是建立在可比个体之间的不同结果的基础上。最简单的匹配方式是将干预组和对照组中协变量值相同的两个个

平平淡淡,戒急用忍,一生学闭嘴。 5万+

剑指 Offer 25. 合并两个排序的链表

题目:剑指 Offer 25. 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制:0 <= 链表长度 <= 1000 链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof 解题: /** * Defi

虚心若愚 199

opencode完整使用指南:从安装配置到Agent式编程实战

AI编程工具正从辅助补全向智能体协作演进。编程智能体不仅理解项目全局,还能自主执行原子级重构、测试验证等工程任务,显著提升研发效能。以opencode为代表的开源终端AI编程工具,凭本地优先和灵活模型接入成为技术团队新宠。本文围绕opencode的完整使用链路展开,从Node.js环境准备、npm全局安装,到解决Windows环境变量配置问题,再到接入OpenAI、Anthropic或多模型管理平台,梳理一套标准化接入方案。同时演示VSCode插件调用、LSP语义分析及Playwright驱动的浏览器自动化

weixin_28837817的博客 319

从零开始掌握Simscape Multibody:机械系统建模与仿真入门

本文为机械系统建模与仿真入门指南,详细介绍了如何从零开始使用Simscape Multibody。通过构建曲柄摇块机构的实战案例,系统讲解了刚体、关节、约束等核心模块的使用,以及模型验证、参数化设计和多领域系统集成等进阶技巧,帮助工程师和学生高效进行虚拟设计与测试。

weixin_29229261的博客 310

合并两个排序链表(C语言)

先看题,其实题目很明白: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 这道题有递归和非递归做法,主要学习的是递归的想法。 题目的函数: struct ListNode *mergeTwoLists(struct ListNode *l1, struct ListNode *l2){} 法一:递归 我们以下面这个例子来看

ouliten的博客 3079

生成对抗网络——CGAN(代码+理解)

CGAN(Conditional Generative Adversarial Network)模型是一种 深度学习模型,属于生成对抗网络(GAN)的一种 变体。它的 基本思想是通过 训练生成器和判别器两个网络,使生成器能够生成与给定条件 相匹配的 合成数据,而判别器则 负责区分真实数据和 生成数据。相比于GAN它引入了条件信息(y),使得生成器可以生成与给定条件相匹配的合成数据,从而提高了生成数据的可控性和针对性。

CXDNW的博客 1万+

【LeetCode21】输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

【LeetCode21】输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 思路:设计一个哨兵节点,遍历两个链表,将较小的元素接到哨兵节点尾部,最后将较长链表剩余的元素接到哨兵节点尾部即可 【代码】 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; }

weixin_47402684的博客 786

YOLO创新点改进点的消融实验设计规范

YOLO改进的消融实验是一种重要的方法,用于评估和验证模型中不同组件的影响。在进行YOLO改进的消融实验时,我们可以选择一些可能的改进点,比如Backbone网络、Anchor框设计和损失函数设计,然后通过实验来分析它们对模型性能的影响。首先,我们需要确定实验设计。对于每个改进点,我们将设计多个实验组,并针对每个实验组训练模型并进行性能评估。这里以三个改进点为例进行说明:改进点1:Backbone网络 (改进点2:Anchor框设计 (改进点3:损失函数设计 (

crasher123的博客 2909

【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)

在游戏发展史上,有些游戏以其简单而耐玩的特性,深深地烙印在了玩家的记忆中。《黄金矿工》就是其中之一,它曾经在4399等游戏平台上掀起了一股游戏热潮。这款游戏不仅给无数玩家带来了欢乐,还让他们体验到了挖掘金矿的刺激与乐趣。在这个项目中,我们将花费半天的时间,利用Unity引擎,重新打造这款经典小游戏。通过复刻《黄金矿工》,我们不仅是在向童年的回忆致敬,更是在挖掘游戏设计的精髓。在这个过程中,我们将学习如何实现游戏的核心玩法,设计简洁而有效的游戏机制。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2902

剑指offer面试题25:合并两个排序的链表

题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路一:迭代 1、设置 res 为哑结点,放置于新链表之前,最后返回的就是 res->next ;设置 p 为当前节点,从 res 开始。 2、当两个链表都非空时进入循环,令新链表的下一个节点 p->next 为 val 更小的节点,相应的链表节点...

weixin_39035802的博客 1168

手把手教你从入门到精通C#串口通信

本文以我开发的串口助手SComTool为例,详细介绍《C#串口通信从入门到精通》专栏的目录内容,本专栏由一个高级工程师多年实战经验总结,绝对是c#串口通信的葵花宝典!带您从入门到精通C#串口通信!

qq_34059233的博客 3万+

剑指offer:面试题17——合并两个排序链表

剑指offer:面试题17——合并两个排序链表 题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路:直接合并O(n)——如下 或者使用递归合并O(logn)——书114页 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), ne...

MereX的博客 299

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

面试题17: 合并两个排序的链表

一. 题目输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的.代码请到我的代码库中下载 Point2Offer二. 代码package com;/** * 剑指offer: 合并两个排序的链表 * 方法:1.使用两个指针,递归实现; * 测试用例:功能测试(两个链表都有多个节点,节点的值互不相等或者存在值相等的多个节点) * 特殊输入测试(一个或两个链表为空,一个链

高筑墙,广积粮,缓称王 845

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

面试题17:合并两个排序链表

/*面试题17 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是递增排序的。 struct ListNode { int m_nValue; ListNode* m_pNext; }; 可能出现的错误:一是合并过程链表出现断裂或没有做到递增排序,二是特殊的输入就会崩溃。 */ ListNode* Merge(ListNode* pHead1,List

飘飘摇摇的風 399

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

零基础学Python:别只囤课,动手实践才是高效学习路线

编程学习的本质不是看多少课程,而是能否将知识转化为可运行的代码。Python语法简洁、上手快,成为零基础入门的首选语言,但真正掌握它需要理解环境配置、调试报错、项目验证等完整链路。从自动化办公、数据分析到Web开发,Python的应用场景广泛,而每个场景都要求学习者具备动手解决问题的能力。面对海量视频教程,单纯刷课容易陷入“看过即学过”的假象;更有效的方式是围绕具体任务,把语法、内置库、脚本调试、项目输出串成闭环。本文从零基础的视角出发,梳理Python学习路线、环境搭建、练习验证标准和常见踩坑经验,帮助初

weixin_33851429的博客 394

面试题17:合并两个排序的链表

问题:输入两个递增的单链表,合并这两个链表使新链表中的结点仍然是按照递增排序的。例如下图所示。 思路:我们先判断哪个结点是新链表中的第一个结点,将指针p1p2指向两个链表的头结点,因为p1指向结点的元素比p2指向的要小,所以L1中的结点为新链表中的第一个结点,并将p1向后挪一个。 然后我们继续从这2个链表中,找到较小的那一个结点继续插入到新链表的尾部,直至两个链表同时为

u012724503的专栏 360

《剑指Offer》面试题17:合并两个排序的链表

《剑指Offer》 P114面试题17:合并两个排序的链表题目:

(●—●) 404

【剑指 Offer 学习】【面试题 17: 合并两个排序的链表】【思路】

题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。   思路: 递归当前较小节点的下一个结点   代码: package 合并两个排序的链表; class ListNode { int val; ListNode next = null; public ListNode(int val) { this.val = va...

handsome_zan的博客 238
上一篇: 面试题16:反转链表
下一篇: 面试题18:树的子结构
SmartBrave
博客等级 码龄12年 25粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值