首页 > 编程语言 >力扣21(java&python)-合并两个有序链表(简单)

力扣21(java&python)-合并两个有序链表(简单)

时间:2022-09-23 10:33:54浏览次数:61  
标签:java 21 val list1 list2 链表 ListNode 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 均按 非递减顺序 排列

解题思路:

递归:使用递归需要明白递归三要素,参考@腐烂的橘子

1.终止条件:当l1或l2任意一个链表为空时

2.递归内容:如果l1.val < l2.val,则让 l1.next 去连接排序好后的链表头,如果l2.val <= l1.val,则让 l2.next 去连接排序好后的链表头(总之就是判断l1和l2那个的头结点更小,然后较小结点的next指向其余结点的合并结果)

3.返回值:每一层递归调用之后排序好后的头结点

举例:

1.

 2.

 3.

 4.

 5.

 6.

 7.

 

 8.

 

java代码:

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode() {}
 7  *     ListNode(int val) { this.val = val; }
 8  *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 9  * }
10  */
11 class Solution {
12     public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
13         if(list1 == null){
14             return list2;
15         }else if(list2 == null){
16             return list1;
17         }else if(list1.val < list2.val){
18             list1.next = mergeTwoLists(list1.next, list2);
19             return list1;
20         }else{
21             list2.next = mergeTwoLists(list1, list2.next);
22             return list2;
23         }
24 
25     }
26 }

 python3代码:

 1 # Definition for singly-linked list.
 2 # class ListNode:
 3 #     def __init__(self, val=0, next=None):
 4 #         self.val = val
 5 #         self.next = next
 6 class Solution:
 7     def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
 8         if not list1:
 9             return list2
10         if not list2:
11             return list1
12         
13         if list1.val < list2.val:
14             list1.next = self.mergeTwoLists(list1.next, list2)
15             return list1
16         else:
17             list2.next = self.mergeTwoLists(list1, list2.next)
18             return list2
19         
20         

标签:java,21,val,list1,list2,链表,ListNode,next
From: https://www.cnblogs.com/liu-myu/p/16721844.html

相关文章

  • nacos启动报错ERROR: Please set the JAVA_HOME variable in your environment, We ne
    昨天在docker上跑了一个nacos,今天就寻思在本地上安装一下nacos,然后安装步骤一切正常,然后在配置自启和以systemd的方式管理docker后进行启动,出现了报错1ERROR:Pleasese......
  • [WSDM 2021]Bipartite Graph Embedding via Mutual InformationMaximization
    总结利用生成对抗网络实现无监督的二部图嵌入方法,聚合时先聚合二跳邻居到一跳再聚合到自己身上以规避不同类型的问题二部图嵌入方式随机游走法重构法,包含协同过滤......
  • 对Javaweb的相关练习之利用.jsp文件和.java文件将输入的数据存储到指定的数据库中
    练习分析importjavax.servlet.*;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.*;importjava.awt.datatransfer.DataFlavor;importjava.......
  • 平衡二叉树 -java实现
     packagetree;/***@author:tianhaichao*@date:2022/9/2215:38*@description:平衡二叉树AVL*1、每个节点的左右子树的高度差不大于1--->|left.height......
  • 正则,java匹配
    1.判断字符串中是否全为英文`booleanresult=str.matches("[a-zA-Z]+");//true:全文英文str.matches("[a-zA-Z0-9]+")//判断英文和数字`````2.提取字符串中所......
  • Leetcode 707 -- 设计链表
    1.题目描述设计一个链表,实现基本操作(增删改查)2.单链表/*============================================someinstructinos:pre:leetcode'sLi......
  • Mac下的Java运行时报错
    运行时报错Error:AJNIerrorhasoccurred,pleasecheckyourinstallationandtryagain为什么会出现这个问题?因为你的java和javac版本不一致为什么......
  • Java运行时错误: Prohibited package name: java.xx
    Java代码运行时如果出现如下错误,表示包名不能这样写,最好不要以“java”开头Exceptioninthread"main"java.lang.SecurityException:Prohibitedpackagename:java.da......
  • JAVA 绑定线程到指定CPU上
    CPU个数、核数、线程数、JAVA多线程关系cpu个数、核数、线程数的关系cpu个数:是指物理上,也及硬件上的核心数;核数:是逻辑上的,简单理解为逻辑上模拟出的核心数;线程数:是同一......
  • C++ "链链"不忘@必有回响之双向链表
    C++"链链"不忘@必有回响之双向链表1.前言写过一篇与单链表相关的博文(https://blog.51cto.com/gkcode/5681771),实际应用中,双向循环链表的功能更强大。单链表中,查询一个......