首页 > 其他分享 >220902_leetcode 21. Merge Two Sorted Lists 合并两个有序链表(简单).md

220902_leetcode 21. Merge Two Sorted Lists 合并两个有序链表(简单).md

时间:2022-09-02 13:11:24浏览次数:105  
标签:md ListNode 21 val 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 均按 非递减顺序 排列

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、解题思路

还是分递归和迭代两种思路来实现,要理解链表

三、解题方法

3.1 Java实现-递归

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        // 提示信息:
        // 两个链表的节点数目范围是 [0, 50]
        // -100 <= Node.val <= 100
        // l1 和 l2 均按 非递减顺序 排列
        if (list1 == null) {
            return list2;
        }
        if (list2 == null) {
            return list1;
        }
        if (list1.val > list2.val) {
            list2.next = mergeTwoLists(list1, list2.next);
            return list2;
        }
        list1.next = mergeTwoLists(list1.next, list2);
        return list1;
    }
}

3.2 Java实现-迭代

class Solution2 {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode ans = new ListNode(0);
        ListNode cursor = ans;
        while (list1 != null && list2 != null) {
            if (list1.val <= list2.val) {
                cursor.next = list1;
                list1 = list1.next;
            } else {
                cursor.next = list2;
                list2 = list2.next;
            }
            cursor = cursor.next;
        }
        cursor.next = list1 != null ? list1 : list2;
        return ans.next;
    }
}

四、总结小记

  • 2022/9/2 沟通协作成本大呀

标签:md,ListNode,21,val,list1,list2,链表,next
From: https://www.cnblogs.com/okokabcd/p/16649478.html

相关文章

  • MRS There is a hole [0x212-0x229] in .debug_loc section. 报错
      这个警告产生是因为MRS删除DEBUG定义导致,要消除警告MRS设置需要更改一下 ......
  • 21 | JAVA注解
    注解什么是注解(Annotation)?注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”:Java的注解可以分为三类:第一类是由编译器使用的注解,例如:@Override:让编译器检......
  • 19删除链表的倒数第N个节点
    题目19删除链表的倒数第N个节点给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=......
  • 题02-线性结构1 两个有序链表序列的合并(代码和笔记)
    @目录题目思路补充的代码题目本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义:ListMerge(ListL1,ListL2);其中Li......
  • 24 两两交换链表中的节点
    题目24两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输......
  • leetcode 206. Reverse Linked List 反转链表(简单)
    一、题目大意给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:......
  • 链表的头插法和尾插法
    复习一下链表的插入操作头插法创建一个临时节点存放数据将头部指针后面的数据都链接到这个临时节点后面将这个临时节点再链接到头部指针后面尾插法创建......
  • 2021 上海
    #include<bits/stdc++.h>#defineTLEios::sync_with_stdio(0),cin.tie(0)#defineendl"\n"#defineFILE"a"#definepbpush_back#defineggexit(0);#definert......
  • 206 反转链表
    题目206反转链表给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例......
  • 21 forms组件-参数initial&instance应用
    简单来讲:如果你想传入前端的页面中附带值,那么在实例化forms中:form=SecondModelForm(data=request.POST,instance=permission_obj)returnrender(request,'rbac/chan......