合并链表

#算法 #笔试题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* 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) {
// 定义dummy节点
let dummy = new ListNode();
// 操作cur就相当于再操作dummy,之所以在定义一个变量cur,是因为最后结果是让返回整个链表,所以返回dummy.next就可以了
let cur = dummy;
// l1,l2相当于两个指针,l1&&l2是循环结束的条件
while(l1&&l2){
// 对比指针的数值大小
if(l1.val>l2.val){
cur.next = l2;
// 变量的修改,cur.next的指向不会变
l2 = l2.next;
}else {
cur.next = l1;
l1 = l1.next;
}
// cur重新赋值
cur=cur.next;
}
// 如果最后发现那个链表还没有为null的话,那么cur.next就指向他
cur.next=(l1?l1:l2);
return dummy.next;
};

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!