-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
题目
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
题解
解题思路
由于是合并两个链表,而是是有序,所以首先对两个链表统一遍历,终止条件就是任何一方到尾部,在遍历过程中判断节点值的大小往新开的链表上衔接。遍历完了之后两个链表要么都遍历完了,要么有一个剩余,然后分别遍历两个链表,把剩余的节点连接到新链表上。最终新链表就是合并并排序好的链表了。
代码
var mergeTwoLists = function(l1, l2) {
if(!l1){
return l2;
}
if(!l2){
return l1;
}
let tempNode = new ListNode("head");
let temp = tempNode;
while(l1 !== null && l2 !== null){
let node = new ListNode();
if(l1.val <= l2.val){
node.val = l1.val;
tempNode.next = node;
tempNode = node;
l1 = l1.next;
} else {
node.val = l2.val;
tempNode.next = node;
tempNode = node;
l2 = l2.next;
}
}
while(l1 !== null){
let node1 = new ListNode();
node1.val = l1.val;
tempNode.next = node1;
tempNode = node1;
l1 = l1.next;
}
while(l2 !== null){
let node2 = new ListNode();
node2.val = l2.val;
tempNode.next = node2;
tempNode = node2;
l2 = l2.next;
}
return temp.next;
};
Metadata
Metadata
Assignees
Labels
No labels