PisecesPeng / PisecesPeng.record.me

:beach_umbrella: All things are difficult before they are easy
MIT License
3 stars 1 forks source link

合并两个有序链表 #45

Closed PisecesPeng closed 2 years ago

PisecesPeng commented 2 years ago

合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回.
新链表是通过拼接给定的两个链表的所有节点组成的.

示例 :

输入: 1->2->4, 1->3->4
输出: 1->1->2->3->4->4


题目地址: https://leetcode-cn.com/problems/merge-two-sorted-lists/

PisecesPeng commented 2 years ago

解题思路

代码

public static class ListNode {
    int val;  // 当前链表值
    ListNode next;  // 下一个链表对象
    ListNode(int x) {  //赋值链表的值
        val = x;
    }
}
public static ListNode func(ListNode node1, ListNode node2) {
    ListNode result = new ListNode(0);
    ListNode tmp = result;
    // 循环两个链表, 直到其中一个到底
    while (node1 != null && node2 != null) {
        // 每次选择val最小的node, 作为返回的node
        if (node1.val > node2.val) {
            ListNode swap = node1;
            node1 = node2;
            node2 = swap;
        }
        tmp.next = node1;
        node1 = node1.next;
        tmp = tmp.next;
    }
    // 获得未到底的链表, 继续赋值
    tmp.next = node1 != null ? node1 : node2 ;
    return result.next;
}
PisecesPeng commented 2 years ago

LeetCode题解

解题思路

代码

public static class ListNode {
    int val;  // 当前链表值
    ListNode next;  // 下一个链表对象
    ListNode(int x) {  //赋值链表的值
        val = x;
    }
}
public static ListNode func(ListNode node1, ListNode node2) {
    if (node1 == null) {
        return node2;
    } else if (node2 == null) {
        return node1;
    } else if (node1.val < node2.val) {
        node1.next = func(node1.next, node2);
        return node1;
    } else {
        node2.next = func(node1, node2.next);
        return node2;
    }
}