合并两个有序链表——力扣21

news2024/9/24 5:31:39

题目描述

在这里插入图片描述
在这里插入图片描述

法一 递归

在这里插入图片描述

class Solution {
public:
    ListNode* mergeTwoLists(ListNode *l1, ListNode*l2){
		if(l1 == nullptr){
			return l2;
		} else if (l2==nullptr){
			return l1;
		} else if (l1->val<l2->val){
			l1->next = mergeTwoLists(l1->next, l2);
			return l1;
		} else {
			l2->next = mergeTwoLists(l1, l2->next);
			return l2;
		}
	}
};

在这里插入图片描述

法二 迭代

1.使用dumy->next来保存需要返回的头结点,注意创建新结点的语法 ListNode* dummy = new ListNode(-1)
2.判断l1,l2哪个值更小,并用 pp指针 来存储更小的结点指针,帮助dummy连接后,控制更小的l1,l2往后移动
直到,一边有nullptr,把另一边都接上

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2){
		ListNode* dummy = new ListNode(-1);   //创建一个新的头节点 
		ListNode* cur = dummy;
		while(l1 && l2){
			ListNode* pp = (l1->val < l2->val) ? l1 : l2;
			cur->next = pp;
			cur = cur->next;
			if(pp==l1) {
				l1=l1->next; 
			} else{
				l2 = l2->next;
			} 
		}
		cur->next = (l1==nullptr) ? l2 : l1;
		ListNode* res = dummy->next;
		delete dummy;
		return res;	
	}

	//version2
	ListNode* mergeTwoLists(ListNode* l1, ListNode* l2){
            if((!l1) || (!l2)) return l1 ? l1 : l2;
            ListNode* dummy = new ListNode(-1);   //创建一个新的头节点 
            ListNode *cur=dummy, *aPtr = l1, *bPtr = l2;
            while(aPtr && bPtr){
                if(aPtr->val < bPtr->val){
                    dummy->next = aPtr;
                    aPtr = aPtr->next;
                } else {
                    dummy->next = bPtr;
                    bPtr = bPtr->next;
                }
                dummy = dummy->next;
            }
            dummy->next = aPtr ? aPtr : bPtr;
            return cur->next;	
        }
};

在这里插入图片描述

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

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

相关文章

常用的快捷键 -VTK快捷键

按键W --------------------- 网格显示模型 按键S --------------------- 曲面显示模型 按键P --------------------- 显示模型包围框 按键F --------------------- 放大到选取点 按键R --------------------- 重置相机视图 按键A ---------------------- 切换演员模式 按…

SSM框架 基础

1.数据库 2.工程 3.pom 4.web.xml 5.spring配置文件头部 6.实体类 7.StudentMapper接口 8. StudentMapper.xml 9.StudentService 10. StudentServiceImpl 11.StudentController 实战 查询所有 StudentMapper StudentService StudentServiceImpl StudentMapper.xml Stude…

使用jmeter进行接口测试

jmeter介绍 JMeter是Apache基金会Jakarta上的一个纯java开源项目&#xff0c;起初用于基于Web的压力测试&#xff08;pressure test&#xff09;&#xff0c;后来其应用范围逐渐扩展到对文件传输FTP&#xff0c;大型数据库&#xff08;JDBC方式&#xff09;&#xff0c;脚本程…

列表的sort方法和sorted的区别

问题&#xff1a;简述一下列表list的sort方法和sorted的区别 sort是应用在list列表上的方法&#xff0c;sorted可以对所有可迭代的对象进行排序操作 list.sort()不会返回对象&#xff0c;会改变原有的list&#xff0c;即直接在原来的list基础上修改(原列表就地排序)&#xff0…

(链表) 剑指 Offer 35. 复杂链表的复制 ——【Leetcode每日一题】

❓ 剑指 Offer 35. 复杂链表的复制 难度&#xff1a;中等 请实现 copyRandomList 函数&#xff0c;复制一个复杂链表。在复杂链表中&#xff0c;每个节点除了有一个 next 指针指向下一个节点&#xff0c;还有一个 random 指针指向链表中的任意节点或者 null。 示例 1&#x…

从容应对,探索CAD辅助命令的优秀实践

在CAD设计中&#xff0c;辅助命令是提升效率和精确度的重要工具。熟练掌握并正确运用CAD中的各种辅助命令对于设计师们来说至关重要。本文将为你介绍一些常用的CAD辅助命令&#xff0c;并详细说明它们的功能和使用方法&#xff0c;帮助你更好地利用这些命令完成高质量的设计工作…

Elasticsearch:使用 ELSER 释放语义搜索的力量:Elastic Learned Sparse EncoderR

问题陈述 在信息过载的时代&#xff0c;根据上下文含义和用户意图而不是精确的关键字匹配来查找相关搜索结果已成为一项重大挑战。 传统的搜索引擎通常无法理解用户查询的语义上下文&#xff0c;从而导致相关性较低的结果。 解决方案&#xff1a;ELSER Elastic 通过其检索模型…

虚拟机(VMware)安装Linux(Ubuntu)安装教程

清华大学开源网站镜像站网址&#xff1a;清华大学开源软件镜像站 | Tsinghua Open Source Mirror 进入之后在搜索框中搜索“ubuntu” 直接点击箭头所指的蓝色字体“ubuntu-20.04.1-desktop-amd64.iso”即可下载

Jmeter介绍以及脚本制作与调试

Jmeter介绍 Jmeter 是 Apache 基金会 Jakarta 上的一个纯 Java 开源项目&#xff0c;起初用于基于 Web 的压力测试&#xff08;pressure test&#xff09;&#xff0c;后来其应用范围逐渐扩展到对文件传输 FTP, 大型数据库&#xff08;JDBC 方式&#xff09;&#xff0c;脚本程…

7.27 作业

1.闹钟 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);tid1 startTimer(1);//显示时间计时器ui->pushButton_2->setEnabled(false);//设置停止为不可用…

陕西师范大学大学:融合传统与创新的学府之旅

前言 > &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 > &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 > &#x1f4d…

MUR2080CT/MUR2080CTR-ASEMI快恢复二极管对管

编辑&#xff1a;ll MUR2080CT/MUR2080CTR-ASEMI快恢复二极管对管 型号&#xff1a;MUR2080CT/MUR2080CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 恢复时间&#xff1a;50ns 正向电流&#xff1a;20A 反向耐压&#xff1a;800V 芯片大小&#xff1a;102MIL*2 …

BGP劫持原理及如何防御

互联网跟人类社会一样&#xff0c;都通过特定的规则和法律来确保社会的正常运行。BGP协议就是互联网中的“规则”之一。BGP用于在不同的自治系统(AS)之间交换路由信息&#xff0c;当两个AS需要交换路由信息时&#xff0c;每个AS都必须指定一个运行BGP的节点&#xff0c;来代表A…

K8s使用Ceph作为后端存储

Ceph概述 部署Ceph集群 Ceph存储使用 Pod使用Ceph持久化数据 Ceph监控 Rook部署Ceph Ceph概述 Ceph介绍 Ceph架构 Ceph核心概念 Ceph介绍 Ceph是一个开源的分布式存储系统&#xff0c;具有高扩展性、高性能、高可靠性等特点&#xff0c;提 供良好的性能、可靠性和可扩展性。…

重新C++系列之运算符重载

一、什么是运算符重载 简单来讲就是对运算符赋予新的意义&#xff0c;但是又不能改变原有的含义&#xff0c;它本身也就是一个函数。运算符重载的本质是以函数的方式来体现。 二、运算符重载有几种 1、按照作用域来划分&#xff0c;有全局操作符重载函数和成员函数操作符重载函…

面向对象——步入JavaScript高级阶段的敲门砖

目录 前言一、认识对象1.什么是对象2.对象的方法3.对象的遍历4.对象的深浅克隆 二、认识函数上下文1.函数的上下文规则 ★2.call和apply ★ 三、构造函数1.用new操作符调用函数2.类与实例3.构造函数和类" 四、原型和原型链1.prototype和原型链查找 ★2.在prototype上添加方…

access偏移注入

偏移注入是因为知道猜到access数据库表名&#xff0c;猜不到列名 因为之前http://192.168.246.11:83/news_view.asp?id15网站有设置waf过滤&#xff0c;需要先把waf防御先删掉后使用 <!--#include file"waf.asp"--> 之前已经知道注入点&#xff0c;详见acces…

从简单的例子 来看 倒排索引

文章首发地址 倒排索引-是什么&#xff1f; 倒排索引&#xff08;Inverted Index&#xff09;是一种常用的文本检索技术&#xff0c;用于快速定位包含某个词汇的文档集合。它的原理是将文档中的每个单词记录在一个索引表中&#xff0c;并且将每个单词所对应的文档编号和位置都…

多租户的低代码平台,Saas开发平台:MateCloud

简介 MateCloud是一款基于Spring Cloud Alibaba的微服务架构。目前已经整合Spring Boot 2.7.0、 Spring Cloud 2021、Spring Cloud Alibaba 2021、Spring Security Oauth2、Feign、Dubbo、JetCache、RocketMQ等&#xff0c;支持多租户的低代码平台&#xff0c;Saas平台开发套件…

Linux磁盘管理命令

目录 1. du (disk usage文件和目录占用的磁盘空间) 2. df (disk free 查看磁盘使用情况) 3. lsblk(list block查看块设备挂载情况) 1. du (disk usage文件和目录占用的磁盘空间) du [-ahskm] 目录/文件&#xff08;文件大小可以直接使用ll查看&#xff09; 选项与参数&a…