天天看点

【力扣】难度【简单】21. 合并两个有序链表

标题:21. 合并两个有序链表

难度:简单

描述:

将两个升序链表合并为一个新的 升序

链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的

【力扣】难度【简单】21. 合并两个有序链表

输入: 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.com/problems/merge-two-sorted-lists

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

执行结果: 通过

执行用时: 0 ms, 在所有 Java 提交中击败了100.00%的用户

内存消耗: 37.9 MB, 在所有 Java 提交中击败了16.96%的用户

通过测试用例: 208 / 208

/**
 * 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) {
           
         //链表2空  返回链表1  
        if(list2 == null){
           return list1;
        }
        //链表1空,返回链表2
        if(list1 == null){
            return list2;
        }
        //创建空链表
        ListNode node = new ListNode(0);
        //给链表节点赋值
        ListNode temp = node;
        //如果链表1,2有数据就循环遍历
        while(list1 != null && list2 != null){
            if(list1.val < list2.val){
                //当前节点赋值
                temp.val = list1.val;
                //将下一个节点指向list1
                temp.next=list1;
                //将当前节点,切换到下一节点
                temp =temp.next;
                //将list1切换到下一个节点
                list1 = list1.next;
            }else{
                //当前节点赋值
                temp.val = list2.val;
                //将下一个节点指向list2
                temp.next=list2;
                //将当前节点,切换到下一节点
                temp =temp.next;
                //将list1切换到下一个节点
                list2 = list2.next;
            }
        }
        //如果list1没数据
        while(list1 != null){
            //给当前节点赋值
            temp.val =list1.val;
            //list1切换到下一个节点
            list1 = list1.next;
            //将list1赋值给下一个节点
            temp.next = list1;
            //切换到下一个节点
            temp = temp.next;
        }
        
        while(list2 != null){
            //给当前节点赋值
            temp.val = list2.val;
             //list2切换到下一个节点
            list2 = list2.next;
            //将list2赋值给下一个节点
            temp.next = list2;
            //切换到下一个节点
            temp = temp.next;
        }
        return node;

    }
}