首页 > 其他分享 >剑指 Offer25. 合并两个排序的链表

剑指 Offer25. 合并两个排序的链表

时间:2023-03-06 19:33:50浏览次数:39  
标签:pre ListNode Offer25 next 链表 l2 l1 排序

题目描述

 

 

 解法一

迭代

思路:当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
       // 创建哨兵节点 ListNode *prehead = new ListNode(-1); ListNode *pre = prehead; while(l1 != nullptr && l2 != nullptr){ if(l1->val < l2->val){ pre->next = l1; l1 = l1->next; } else{ pre->next = l2; l2 = l2->next; } pre = pre->next; }
       //如果一个链表空了,则直接连在后面 pre->next = l1 ==nullptr ? l2 : l1; return prehead->next; } };

解法二

递归

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;
        }
    }
};

 

标签:pre,ListNode,Offer25,next,链表,l2,l1,排序
From: https://www.cnblogs.com/zc-030/p/17185085.html

相关文章

  • 剑指 Offer22.链表中倒数第k个节点
    题目描述   解法一顺序查找思路:链表长度为n,则链表倒数第k个节点是第n-k个节点classSolution{public:ListNode*getKthFromEnd(ListNode*head,intk)......
  • 今日学习之二分法排序
    二分法排序主要思想是在数组中截取一个数center,然后将数组分成leftArr、rightArr两部分,其中leftArr全部小于center,rightArr全部大于center(这里没有考虑有重复值的情况),最后......
  • 字符串排序III【北京大学考研机试题】
    字符串排序III按要求输入字符串进行排序并输出。输入格式输入包含多组测试数据。每组测试数据,第一行包含整数N,表示共有N个字符串。接下来,会将这N个字符串,按一行......
  • 字符串排序【北京大学考研机试题】
    字符串排序输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果。输入格式一行,一个字符串。输出格式一行,排序后......
  • 十大排序
    (平均/最好/最坏)时间复杂度、空间复杂度、稳定性注意:main方法测试调用统一提取出来,按照需求自己打开/关闭注释去调用publicstaticvoidmain(String[]args){......
  • 冒泡排序
    冒泡排序对N个数据进行排序,共进行N-1轮排序,每一轮都从第一个数据向后面比较(假如从小向大排列),若前面的数据大于后面的数据,则交换位置,再让第二个数据与第三个比较,以此类推......
  • 【基数排序算法详解】Java/Go/Python/JS/C不同语言实现
    说明基数排序(RadixSort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的......
  • 二维数组的一般使用,以及二维数组的二维排序
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;vector<vector<int>>a(6);//boolcmp(vector<int>&a,vector<int>&b){//if(a[0]!=b......
  • SQL-排序与分页
    1.排序(ORDERBY)使用:ORDERBY对查询到的数据进行排序操作升序:ASC(ascend)默认不写升序降序:DESC(descend)SELECTemployee_id,salaryFROMemployeesORDERBYsalaryDES......
  • 【LeetCode二叉树#17】在二叉搜索树中插入或删除某个值(涉及重构二叉树、链表基础、以
    二叉搜索树中的插入操作力扣题目链接(opensnewwindow)给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据保证......