9.25算法

发布时间 2023-09-25 11:08:16作者: 卧龙丹心
#include <bits/stdc++.h>
using namespace std;
struct ListNode
{
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
    ListNode dummy_node(0);
    ListNode *dummy = &dummy_node;
    while(list1 != nullptr && list2 != nullptr){
        if(list1->val < list2->val){
            dummy->next = list1;
            list1 = list1->next;
        }
        else{
            dummy->next = list2;
            list2 = list2->next;
        }
       
        dummy = dummy->next;
    }
    while(list1 != nullptr){
        dummy->next = list1;
        list1 = list1->next;
        dummy = dummy->next;
    }
    while(list2 != nullptr){
        dummy->next = list2;
        list2 = list2->next;
        dummy = dummy->next;
    }
    return (&dummy_node)->next;
}
int main()
{
    auto a1 = ListNode(1);
    auto a2 = ListNode(2);
    auto a3 = ListNode(3);
    auto a4 = ListNode(4);
    auto a5 = ListNode(5);
    a1.next = &a2;
    a2.next = &a3;

    a4.next = &a5;
    mergeTwoLists(&a1,&a4);
    return 0;
}
 
概述
 
数组
 
 
字符串
 
 
链表
删除链表中的节点
删除链表的倒数第N个节点
反转链表
合并两个有序链表
回文链表
环形链表
 
 
 
排序和搜索
 
 
动态规划
 
 
设计问题
 
 
数学
 
 
其他
 

合并两个有序链表

 
 

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

 

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