首页 > 其他分享 >LeetCode合并两个有序链表(/dfs)

LeetCode合并两个有序链表(/dfs)

时间:2023-02-01 21:48:26浏览次数:49  
标签:ListNode dfs next 链表 l2 l1 prev LeetCode

题目

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

约束

解法

方法一


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

方法二


class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode* preHead = new ListNode(-1);

        ListNode* prev = preHead;
        while (l1 != nullptr && l2 != nullptr) {
            if (l1->val < l2->val) {
                prev->next = l1;
                l1 = l1->next;
            } else {
                prev->next = l2;
                l2 = l2->next;
            }
            prev = prev->next;
        }

        // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
        prev->next = l1 == nullptr ? l2 : l1;

        return preHead->next;
    }
};

标签:ListNode,dfs,next,链表,l2,l1,prev,LeetCode
From: https://www.cnblogs.com/chuixulvcao/p/17084200.html

相关文章

  • BM7 链表中环的入口结点
    https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4?tpId=295&tqId=23449&ru=%2Fpractice%2Fff05d44dfdb04e1d83bdbdab320efbcb&qru=%2Fta%2Fformat-top......
  • #yyds干货盘点# LeetCode程序员面试金典:魔术索引
    题目:魔术索引。在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1......
  • LeetCode.20 有效的括号
    1.题目给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号......
  • #yyds干货盘点# LeetCode面试题:两数之和
    1.简述:给定一个整数数组nums 和一个整数目标值target,请你在该数组中找出和为目标值target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个......
  • 数据结构——链表
    链表数组要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个100MB大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于100MB,......
  • 判断是否为回文链表
    /***Definitionforsingly-linkedlist.*functionListNode(val,next){*this.val=(val===undefined?0:val)*this.next=(next===undefined......
  • LeetCode.225 用队列实现栈
    1题目请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop和empty)。实现MyStack类:voidpush(intx)将元素x压入栈顶。intpop()......
  • LeetCode.232 用栈实现队列
    1.题目请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()......
  • [leetcode每日一题]2.1
    ​​2325.解密消息​​给你字符串 ​​key​​ 和 ​​message​​ ,分别表示一个加密密钥和一段加密消息。解密 ​​message​​ 的步骤如下:使用 ​​key​​ 中2......
  • 【算法训练营day35】LeetCode860. 柠檬水找零 LeetCode406. 根据身高重建队列 LeetCod
    LeetCode860.柠檬水找零题目链接:860.柠檬水找零独上高楼,望尽天涯路本来以为只想到了最笨的方法,即讨论所有情况。classSolution{public:boollemonadeChange......