合并两个排序的链表

将两个链表合并排序 这是方法一,将两个链表先相连在排序#include<stdio.h>#include<malloc.h>typedef struct StudentType{ int no; int sub; struct StudentType *next,*prior;}*Linklist,Link;Linklist Build(int n);void Paixu(Linklist h... 阅读详情

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

源代码:

一、非递归解法

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {//需要注意分四种情况:1)list2为空,2)list1为空;3)两者都为空;4)两者都不为空。
    public ListNode Merge(ListNode list1,ListNode list2) {
        ListNode list3=null,pre=null;
        if(list1!=null&&list2==null){
            return list1;
        }else if(list1==null&&list2!=null){
            return list2;
        }else if(list1!=null&&list2!=null){
        
        while(list1!=null&&list2!=null){
            if(list1.val<list2.val){
                if(list3==null){
                    pre=list3=list1;
                    list1=list1.next;//注意这些细节
                }else{
                list3.next=list1;
                list3=list3.next;
                list1=list1.next;//注意这些细节
                }
            }else{//list1.val >= list2.val
                if(list3==null){
                    pre=list3=list2;
                    list2=list2.next;//注意这些细节
                }else{
                list3.next=list2;
                list3=list3.next;
                list2=list2.next;//注意这些细节
                }
            }
        }
        while(list1!=null){
                list3.next=list1;
                list3=list3.next;
                list1=list1.next;
        }
        while(list2!=null){
                list3.next=list2;
                list3=list3.next;
                list2=list2.next;
        }
        }
        return pre;
    }
}

二、递归解法

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        ListNode list3=null,pre=null;
        if(list1!=null&&list2==null){
            return list1;
        }else if(list1==null&&list2!=null){
            return list2;
        }else if(list1!=null&&list2!=null){
            if(list1.val<list2.val){
                if(list3==null){
                    pre=list3=list1;
                }else{
                list3.next=list1;
                list3=list3.next;
                }
                list3.next = Merge(list1.next,list2);
                list3 = list3.next;
             }else{//list1.val >= list2.val
                if(list3==null){
                    pre=list3=list2;
                }else{
                list3.next=list2;
                list3=list3.next;
                }
                list3.next = Merge(list1,list2.next);
                list3 = list3.next;
            }
        }
        return pre;
    }
}

 

手把手教你学GPU的KMD专栏--2.4 GPU固件加载与初始化流程 GPU固件(Firmware)是嵌入在GPU芯片ROM或EEPROM中的低级代码,是GPU启动时首先执行的程序。它负责GPU硬件的基础初始化和基本功能配置,是GPU与操作系统之间的"第一道桥梁"。与操作系统驱动不同,固件在CPU启动后、操作系统加载前就已执行,是硬件层面的"启动代码"。关键认知:GPU固件是GPU的"BIOS",没有它,GPU硬件无法进入可操作状态。就像CPU需要BIOS来初始化内存和外设一样,GPU需要固件来初始化其核心组件。 阅读详情

相关推荐

FoundationPose实战:从零部署到Demo运行全记录

本文详细记录了FoundationPose从零部署到Demo运行的全过程,包括Ubuntu环境配置、项目部署、依赖安装及常见问题解决方案。特别针对复现过程中的关键步骤如CUDA版本选择、Eigen3安装等提供了实用技巧,帮助开发者高效完成FoundationPose的部署与调试。

weixin_27102543的博客 269

合并两个排序的链表——js

合并两个排序的链表 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路 新建一个链表,然后比较两个链表中的元素值,把较小的那个链到新链表中,由于两个输入链表的长度可能不同,所以最终会有一个链表先完成插入所有元素,则直接另一个未完成的链表直接链入新链表的末尾。 重点抓住这两个链表都是单挑递增的,因此我们只需要不断地比较他们的头结点就行,明显这是个重复的...

qq_40608516的博客 690

数字设计实验:RISC-V指令单周期CPU

本文旨在介绍RISC-V指令单周期CPU的设计思路和仿真实现(含代码)

2401_83740084的博客 2717

165. 合并两个排序链表

165. 合并两个排序链表 将两个排序链表合并为一个新的排序链表 样例 样例 1: 输入: list1 = null, list2 = 0->3->3->null 输出: 0->3->3->null 样例2: 输入: list1 = 1->3->8->11->15->null, list2 = 2->null 输出: 1->2->3->8->11->15-&g...

yinhua405的博客 166

(第78天)DB RU 补丁升级:19C 升级到 19.22

目前 Oracle 19C 是最新的稳定支持的版本,生产环境中使用的越来越多。当然,随着客户使用量的增多,自然无可避免的产生了很多 BUG,Oracle 每季度都会发布一个 RU 补丁来修复当前季度所产生的一些重要 BUG 补丁。作为 DBA,DB 补丁修复必然是需要掌握的一项技能。本文将介绍如何将数据库升级到最新的 RU 版本。

LuciferLiu_DBA 846

基于FISCO BCOS 部署可升级的 Solidity存证智能合约

本文介绍了基于FISCOBCOS平台的可升级Solidity存证智能合约实现方案。采用透明代理模式,包含逻辑合约、代理合约和管理合约三部分,支持业务逻辑升级而不影响存储数据。详细阐述了合约架构设计、Solidity代码实现、Go SDK交互流程以及完整的部署升级步骤。方案具有数据持久性、版本兼容性和生产就绪等特点,提供了权限控制、输入验证等安全机制,并包含监控管理工具。该实现为企业级区块链存证应用提供了可靠的基础架构,支持后续功能扩展和定制化开发。

分享AI、区块链技术及应用,未来已来 1516

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

一、题目 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 二、解题思路 Step1.定义一个指向新链表的指针,暂且让它指向NULL; Step2.比较两个链表的头结点,让较小的头结点作为新链表的头结点; Step3.有两种方法。 ①递归比较两个链表的其余节点,让较小的节点作为上一个新节点的后一个节点; ②循环比较两个链表的其余节点,让较小的节点作为上一个新节点的后一...

皮卡丘的博客 2623

基于STM32设计的指针式电子钟与万年历(升级版)

这是基于STM32设计的一个指针式电子钟+万年历小项目,采用3.5寸的LCD屏显示时钟,日历、温度、天气,支持触摸屏调整设置时间,设置闹钟,查看日历等等。整体项目主要是技术点就是LCD屏的图形绘制。比如: 时钟的时针绘制、分针、秒针、表盘、日历绘制等等。

1万+

合并两个排序了的链表

合并

大冰的小屋 974

告别定位不准!Inner-IoU助力YOLOv11边界框回归精度飙升

Inner-IoU 凭借辅助边框的创新设计,成功解决了传统 IoU 损失在小目标、遮挡场景下的收敛难题,为 YOLOv11 注入了更强的定位能力。从原理剖析到代码集成,本教程已为你铺就了一条“精度提升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“精度优异”的答卷——相信我,当你看到检测框精准贴合目标的那一刻,你会明白这份尝试的价值。

FJN110的博客 192

一层一责,一聚合一包:DDD分层架构下的微服务代码模型、三重边界与服务数据协作

领域模型画得再清楚,落不进代码也是空谈。本文以一个可运行的客户中心微服务为线索,先对比整洁架构、六边形架构与DDD分层架构,指出三者共同守护的那条隔离核心业务的红线;再把DDD分层落成四个一级目录、以聚合为单位分包、一个聚合一个仓储的代码模型,拆解实体、聚合根、值对象、领域事件、领域服务与仓储的设计要点;随后厘清逻辑、物理、代码三重边界,并用检查器实测:干净代码零越界,拆出积分聚合时领域代码无需改动;注入九处越界后,必须先重构才能拆分。最后梳理服务调用三场景与PO、DO、DTO、VO的协作。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 177万+

合并两个排序链表

将两个排序链表合并为一个新的排序链表 样例 样例 1: 输入: list1 = null, list2 = 0->3->3->null 输出: 0->3->3->null 样例2: 输入: list1 = 1->3->8->11->15->null, list2 = 2->null 输出: 1->2...

weixin_41791402的博客 274

STM32 使用IQmath实现SVPWM

文章目录SVPWMIQMATHIQmathLib测试部分程序附件 SVPWM SVPWM是空间矢量脉宽调制(Space Vector Pulse Width Modulation)的简称,通常由三相逆变器的六个功率开关管组成,经过特定的时序和换相所所产生的脉冲宽度调制波,最终输出的波形可能会十分接近理想的正弦波形。 具体如下图所示;左侧为复平面,即空间矢量,右侧为时域的正弦波形; 关于SVPWM原理的文章非常多,这里可以推荐一下网上一个非常不错的教程《SVPWM的原理及法则推导和控制算法详解第五修改版》,

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

链表:合并两个排序的链表

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 代码实现如下: class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dum=new ListNode(0); ListNode

aishenla的博客 199

lwip-2.0.3

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

lintcode——合并两个排序链表

1.题目      将两个排序链表合并为一个新的排序链表      给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。 2.思路      新建一个链表,对给定的两个链表从头遍历并比较大小,每次将较小( 3.代码 /**  * Definition of ListNode  * class ListNode

LFJ17的博客 980

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【链表】合并两个排序的链表

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围: 0≤n≤1000 ,−1000≤节点值≤1000要求:空间复杂度 O(1) ,时间复杂度 O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:输入: {1,3,5},{2,4,6}返回值:{1,2,3,4,5,6}输入:{},{}返回值:{}输入:{-1,2,4},{1,3,4}

wamp0001的博客 333

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

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

【合并两个排序的链表】

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。1. 如果有一个链表为空,返回另一个链表 2. 如果pHead1 节点值比小pHead2,下一个节点应该是 pHead1,应该return pHead1,在return之前,指定pHead1的下一个节点应该是pHead1.next和pHead2俩链表的合并后的头结点 3. 如果pHead1 节点值比pHead2大,下一个节点应该是pHead2,应该return pHead2,在return之前,指定pHead2的下一个

Coder_ljw的博客 351
上一篇: 反转链表
下一篇: 树的子结构
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值