leetcode(js)-每日一练之 合并两个有序链表
这属于一个关于链表的入门题:按照我下述代码画图一步一步来就能理解,前提是理解链表的基本特性和概念,本题只用了单向链表,如果想详细理解链表知识,我转载一个链接,大家可以去看看
var mergeTwoLists = function(l1, l2) {
let curr = new ListNode();
let dummy = curr;
while (l1 !== null && l2 !== null) {
if (l1.val < l2.val) {
curr.next = l1;
l1 = l1.next;
} else {
curr.next = l2;
l2 = l2.next;
}
curr = curr.next;
}
if (l1 != null) {
curr.next = l1;
}
if (l2 != null) {
curr.next = l2;
}
return dummy.next;
};
------------------------------------------------------------------------------------------------------
-
L1 L2 curr 链表名字,都代表 各个链表的头
-
let dummy = curr 的作用是 先把dummy指向curr的头部
方便curr 插入所有节点之后 ,不用再重新找回头节点 ,直接用dummy输出即可。基本所有链表题都会用到这个小技巧,要学会!
下面是我自己理解的时候画的图,大家可能看不懂0.0 自己可以动手画一画。
(黑笔,第一次循环,蓝笔第二次循环,红笔第三次循环)