题目:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解决:
/*
* @lc app=leetcode.cn id=21 lang=javascript
*
* [21] 合并两个有序链表
*/
// @lc code=start
/**
* 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}
*/
var mergeTwoLists = function(l1, l2) {
// 方法1,两个链表转数组,数组排序后转回链表
if (l1 === null) {
return l2;
}
if (l2 === null) {
return l1;
}
let result1 = [], result2 = [];
while(l1) {
result1.push(l1.val)
l1 = l1.next
}
while(l2) {
result2.push(l2.val)
l2 = l2.next
}
let result = result1.concat(result2);
// 包含负数排序
result.sort(function(a,b){return a-b;});
let nodes = []
for(let i = 0; i < result.length; i++) {
let node = {}
node.val = result[i]
node.next = null
nodes.push(node)
}
for(let i = 0; i < nodes.length - 1; i++) {
nodes[i].next = nodes[i + 1]
}
return nodes[0];
};
// @lc code=end