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

21. 合并两个有序链表

时间:2023-04-01 09:45:39浏览次数:38  
标签:ListNode 21 val list1 next 链表 有序 list2 cur

 

21. 合并两个有序链表

做法1:

构建虚拟头节点,而后双指针做法。

/**
 * Definition for singly-linked list.
 * 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) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        ListNode* head = new ListNode(-1);
        ListNode* cur = head;

        while(list1 != nullptr && list2 != nullptr){
            if(list1->val <= list2->val){
                cur->next = list1;
                cur = cur->next;
                list1 = list1->next;
            }
            else{
                cur->next = list2;
                cur = cur->next;
                list2 = list2->next;
            }
        }
        while(list1 != nullptr){
            cur->next = list1;
            cur = cur->next;
            list1 = list1->next;
        }
        while(list2 != nullptr){
            cur->next = list2;
            cur = cur->next;
            list2 = list2->next;
        }
        return head->next;
    }
};

做法2:

迭代。那么最终返回的是哪一个节点呢?是两个链表最开始节点中小的那个节点。

/**
 * Definition for singly-linked list.
 * 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) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        if(list1 == nullptr) return list2;
        if(list2 == nullptr) return list1;

        if(list1->val <= list2->val){
           list1->next = mergeTwoLists(list1->next, list2);
           return list1;
        }
        list2->next = mergeTwoLists(list1, list2->next);
        return list2;

    }
};

 

标签:ListNode,21,val,list1,next,链表,有序,list2,cur
From: https://www.cnblogs.com/luxiayuai/p/17278105.html

相关文章

  • 202031607213-李蕊 实验一 软件工程准备--构建之法与博客首秀
    实验一软件工程准备一、实验介绍项目内容班级博客链接https://edu.cnblogs.com/campus/xbsf/2020CSSE本次作业要求链接https://edu.cnblogs.com/campus/xbsf/2020CSSE/homework/12938我的课程学习目标(1)学习博客园软件开发者学习社区使用技巧和经验。(2)了解Gi......
  • leetcode876. 链表的中间结点
      876. 链表的中间结点方法一:最简单的做法,先求出整个链表的长度,再求1/2处节点的位置。/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx)......
  • 202031607211-米乐 实验一 软件工程准备—初步认识软件工程
    实验一软件工程准备项目内容班级博客链接2023年春软件工程(2020级计算机科学与技术)本次作业要求链接实验一软件工程准备我的课程学习目标学会使用博客园进行学习、了解Github的基本操作、阅读《现代软件工程——构建之法》本次作业帮我实现的学习目标能够......
  • 力扣---剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。 示例:输入:nums= [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4]也是正确的答案之一。 提示:0<=nums.length<=500000<=nums[i]<=10000来源:力扣(LeetCode)链接:ht......
  • AcWing 1215. 小朋友排队
    n个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增......
  • Arduino 外接 DS3132 读数为2165/165/165问题解决
    即使SCL/SDA不接线,DS3132也会返回,这个值为2165/165/165因此问题的来源为接线不牢靠。接线牢靠的标准:RTC模块(ZS-042)上的PWR灯应该常亮,并且亮度很大(我一开始接线,PWR亮度小,而且闪烁)RTC的SCL接Arduino的A4,SDA接Arduino的A5.The165indicatesthatthedatalinefor......
  • 反转链表-leetcode92
    给你单链表的头指针head和两个整数left和right,其中left<=right。请你反转从位置left到位置right的链表节点,返回反转后的链表。示例1:输入:head=[1,2,3,4,5],left=2,right=4输出:[1,4,3,2,5]示例2:输入:head=[5],left=1,right=1输出:[5]//leet......
  • 2023-03-21-将指针所在地址传入函数来创建链表的一种写法
    如下,通过将指针所在的地址传入函数中即**p的形式,来保证直接对地址进行运算,而不需要再返回一个链表//双链表#include<stdio.h>#include<stdbool.h>#include<malloc.h>typedefstructDNode{intdata;structDNode*prior,*next;//prior指向上一个结点,next指......
  • 202031603210-李震 实验一软件工程准备-简单认识软件工程
    项目目标课程班级博客链接2020级卓越工程师班本次作业要求链接实验一软件工程准备我的课程学习目标1.学会使用博客园进行学习2.了解GitHub的基本操作3.学习并掌握软件工程的相关知识本次作业在哪些方面帮我实现学习目标通过本次实验,我学习了1.Git......
  • 【LBLD】如何判断回文链表
    【LBLD】如何判断回文链表判断回文单链表/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,......