zoukankan      html  css  js  c++  java
  • 【LeetCode21】Merge Two Sorted Lists★

    1.题目描述:

    2.解题思路:

      本题是要合并两个已经有序的单链表,思路很简单,有两种方法:非递归和递归。

    3.Java代码:

    (1)非递归:

      为方便操作,定义一个辅助的头节点,然后比较原来两个链表的头节点,将小的那一个加入到合并链表,最后,当其中一个链表为空时,直接将另一个链表接入到合并链表即可。

     1 //public class LeetCode21 为测试
     2 public class LeetCode21 {
     3     public static void main(String[] args) {
     4         ListNode m1=new ListNode(1),m2=new ListNode(3),m3=new ListNode(5);
     5         m1.next=m2;
     6         m2.next=m3;
     7         System.out.println("链表1:"+m1.val+"->"+m2.val+"->"+m3.val);
     8         ListNode n1=new ListNode(2),n2=new ListNode(4),n3=new ListNode(6);
     9         n1.next=n2;
    10         n2.next=n3;
    11         System.out.println("链表2:"+n1.val+"->"+n2.val+"->"+n3.val);
    12         ListNode result=new Solution().mergeTwoLists(m1, n1);
    13         if(result!=null){
    14             System.out.print("合并链表:"+result.val);
    15             ListNode resultNext=result.next;
    16             while(resultNext!=null){
    17                  System.out.print("->"+resultNext.val);
    18                  resultNext=resultNext.next;
    19              }
    20         }
    21     }
    22 }
    23 class Solution {
    24      public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    25          ListNode fakeHead=new ListNode(0);
    26          ListNode p=fakeHead;
    27          while(l1!=null&&l2!=null){
    28              if(l1.val<l2.val){
    29                  p.next=l1;
    30                  l1=l1.next;
    31              }else{
    32                  p.next=l2;
    33                  l2=l2.next;
    34              }
    35              p=p.next;
    36          }
    37          if(l1!=null) p.next=l1;
    38          if(l2!=null) p.next=l2;
    39          return fakeHead.next;
    40         }
    41 }
    42 class ListNode {
    43     int val;
    44     ListNode next;
    45     ListNode(int x) { val = x; }
    46     }

    测试结果:

    (2)递归:

     1 //public class LeetCode21 为测试
     2 public class LeetCode21 {
     3     public static void main(String[] args) {
     4         ListNode m1=new ListNode(1),m2=new ListNode(3),m3=new ListNode(5);
     5         m1.next=m2;
     6         m2.next=m3;
     7         System.out.println("链表1:"+m1.val+"->"+m2.val+"->"+m3.val);
     8         ListNode n1=new ListNode(2),n2=new ListNode(4),n3=new ListNode(6);
     9         n1.next=n2;
    10         n2.next=n3;
    11         System.out.println("链表2:"+n1.val+"->"+n2.val+"->"+n3.val);
    12         ListNode result=new Solution().mergeTwoLists(m1, n1);
    13         if(result!=null){
    14             System.out.print("合并链表:"+result.val);
    15             ListNode resultNext=result.next;
    16             while(resultNext!=null){
    17                  System.out.print("->"+resultNext.val);
    18                  resultNext=resultNext.next;
    19              }
    20         }
    21     }
    22 }
    23 class Solution {
    24      public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    25          if(l1==null) return l2;
    26          if(l2==null) return l1;
    27          if(l1.val<l2.val){
    28              l1.next=mergeTwoLists(l1.next, l2);
    29              return l1;
    30          }else{
    31              l2.next=mergeTwoLists(l1, l2.next);
    32              return l2;
    33          }
    34         }
    35 }
    36 class ListNode {
    37     int val;
    38     ListNode next;
    39     ListNode(int x) { val = x; }
    40     }

    测试结果:

      

  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/zhangboy/p/6498894.html
Copyright © 2011-2022 走看看