题目
难度级别:简单
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解题思路:
js内没有链表,不过力扣已经帮忙实现了一个链表对象ListNode,我们直接调用就可以了,首先我们new一个链表对象l3,并附上一个初始值-1,做为哨兵节点,我们在设置一个指针prev。之后我们在l1和l2都不为null的情况下,对比l1和l2的当前值。若l1当前的值小于等于l2当前的值的话,我们将l1赋值给prev的next,l1像前移,反之l1>l2情况下,将l2赋值给prev的next,l2向前移。比较结束后,将prev向前移,继续循环,直至其中一个链表为null。最后将不为null的值赋值给prev的next。最后输出l3.next即为比较之后的链表。
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
const mergeTwoLists = function(l1, l2) {
const l3 = new ListNode(-1)
let prev = l3
while(l1 != null && l2 != null) {
if (l1.val <= l2.val) {
prev.next = l1
l1 = l1.next
}else{
prev.next = l2
l2 = l2.next
}
prev = prev.next
}
prev.next = l1 == null ? l2 : l1;
return l3.next
};
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists