原创

[百战LeetCode][5.合并两个有序递增的链表]


==========================努力奋斗财源广进==========================

一、算法题目

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。

二、题解

1、我的题解

import java.util.*;
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        //使用递归的方式代码实现
        if(list1 == null){
            return list2;
        } else if(list2 == null){
            return list1;
        }
        
        if(list1.val > list2.val){
            list2.next = Merge(list1, list2.next);
            return list2;
        }else{
            list1.next = Merge(list1.next, list2);
            return list1;
        }      
    }
}

2、优秀题解

public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        ListNode dummy = new ListNode(-1);
        ListNode res = dummy;
        // 必须保证两个list都不为空
        while(list1 != null & list2 != null) {
            if(list1.val > list2.val) {
                dummy.next = list2;
                list2 = list2.next;
                dummy = dummy.next;
            } else if(list1.val <= list2.val) {
                dummy.next = list1;
                list1 = list1.next;
                dummy = dummy.next;
            }
        }
        // list1后面还有,就把剩下的全部拿走
        if(list1 != null) {
            dummy.next = list1;
        }
        if(list2 != null) {
            dummy.next = list2;
        }
        return res.next;
    }
}

三、解法心得

四、自我监督

评论区记录复习记录

  • 作者:北斗七点半联系作者
  • 发表时间:2022-07-09 12:42
  • 版权声明:禁止转载
  • 非公众号转发
  • 评论