21.合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:
输入:l1 = [], l2 = []
输出:[]

示例 3:
输入:l1 = [], l2 = [0]
输出:[0]

提示:

两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列

cpp 复制代码
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
	 if(list1==nullptr){
	     return list2;
	 }
	 if(list2==nullptr){
	     return list1;
	 }
	 ListNode* c = nullptr;
	 if(list1->val > list2->val){
	     c = list2;
	     list2 = list2->next;
	 }
	 else{
	     c = list1;
	     list1 = list1->next;
	 }
	 ListNode* d = c;
	 while(list1!=nullptr&&list2!=nullptr){
	     if(list1->val > list2->val){
	         d->next = list2;
	         list2 = list2->next;
	         d = d->next;
	     }
	     else{
	         d->next = list1;
	         list1 = list1->next;
	         d = d->next;
	     }
	 }
	 if(list1!=nullptr){
	     d->next = list1; 
	 }
	 if(list2!=nullptr){
	     d->next = list2; 
	 }
	 return c;
}
相关推荐
apcipot_rain19 分钟前
密码学——序列密码 序列线性复杂度 B-M算法 例题演示
算法·密码学
迪小莫学AI39 分钟前
LeetCode 1863. 找出所有子集的异或总和再求和
算法·leetcode·深度优先
技术小白Byteman1 小时前
蓝桥刷题note13(排序)
开发语言·数据结构·c++·学习·算法·visualstudio
芜湖xin2 小时前
【题解-Acwing】798. 差分矩阵
算法·差分
_星辰大海乀2 小时前
二叉树相关练习--2
java·开发语言·数据结构·算法·链表·idea
一只拉古2 小时前
掌握扫描线(sweep line)算法:从LeetCode到现实应用
算法·leetcode·面试
OneQ6662 小时前
C++自学笔记——动态创建对象
c++·笔记·算法
梭七y2 小时前
【力扣hot100题】(064)在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
Dream it possible!2 小时前
LeetCode 热题 100_完全平方数(84_279_中等_C++)(动态规划(完全背包))
c++·leetcode·动态规划·完全背包
Fantasydg2 小时前
DAY 39 leetcode 18--哈希表.四数之和
算法·leetcode·散列表