首页 > 其他分享 >合并两个有序链表

合并两个有序链表

时间:2023-04-04 16:58:48浏览次数:35  
标签:ListNode struct 合并 list1 list2 链表 有序 next

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

示例 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 均按 非递减顺序 排列

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
    struct ListNode * head = (struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode * tail;

    head->next = NULL;
    tail = head;

    while (list1 && list2) {
        if (list1->val < list2->val) {
            tail->next = list1;
            list1 = list1->next;
        }
        else {
            tail->next = list2;
            list2 = list2->next;
        }
        tail = tail->next;
    }
    tail->next = list1 ? list1 : list2;
    return head->next;
}

标签:ListNode,struct,合并,list1,list2,链表,有序,next
From: https://www.cnblogs.com/shaun23/p/17286943.html

相关文章

  • 138. 复制带随机指针的链表
    /*//DefinitionforaNode.classNode{public:intval;Node*next;Node*random;Node(int_val){val=_val;next=NULL;random=NULL;}};*/classSolution{public:Node*copyRandomList(Node*......
  • 链表练习3
    已知整型链表,设计算法,在所有结点值为x的结点前插入结点值为y的结点,插入的结点个数通过函数值返回。#include<stdio.h>#include<stdlib.h>typedefstructnode{//用Node代替structnodeinta;structnode*next;}Node,*LinkList;LinkListcreate();Link......
  • 代码随想录Day20-Leetcode654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验
    654.最大二叉树题目链接:https://leetcode.cn/problems/maximum-binary-tree/基本的模拟思路很快/***Definitionforabinarytreenode.*functionTreeNode(val,left,right){*this.val=(val===undefined?0:val)*this.left=(left===undefined......
  • 复杂链表的复刻
    暴力做法时间复杂度 O(n^2)遍历一遍,复制next指针,新建链表遍历第二遍,复制random指针,查找每一个random节点的位置classSolution{public:ListNode*copyRandomList(ListNode*head){ListNode*dummy=newListNode(-1),*tail=dummy;if(!hea......
  • 最长连续序列(并查集、数组)、复原 IP 地址(字符串、回溯)、删除链表的倒数第 N 个结
    最长连续序列(并查集、数组)给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)__的算法解决此问题。示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2,3,4]。它的长度为4......
  • 环形链表
    给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos......
  • 启发式合并(树上)
    一般用于:查询每一个子树的相关所有信息, 内容:dfs,后,合并儿子的时候,继承一个重儿子,然后把其他儿子暴力合进去就行了,最坏的时间复杂度:NlongN 如何继承的时候不是暴力捏?给每一个点赋值一个新的ID,就行了. 重点是在结构体tr[]节点里面的各种定义的东西, ......
  • 带环的单链表追击之拓展证明
    对于单链表有环问题,上一期,我们已经详细讲解了!!而快慢指针功不可没!!对于本期我们再次回顾,链表有环问题时,不难心中存在一个疑问,一定能追得上吗?会不会错过??那么为什么??为何能追上,什么情况下会追不上!!这就是我们今天讨论的重点!!假设单链表有环,快指针每次走两步,而慢指针每次走一步!!那么,快慢指......
  • 23. 合并 K 个升序链表
    题目描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。解题1/**2*Definitionforsingly-linkedlist.3*publicclassListNode{4*intval;5*ListNodenext;6*ListNo......
  • git 选择合并
    需求:有两个分支,develop,master,需要把develop的提交记录,选择性合并到master1. 将ideal 切换到master分支,checkout 2.   3.根据提交记录,右键cherrypick   4.再执行push操作。合并完成......