思路: dummy虚拟节点
- 这边采用typescript进行刷题,首先建立额外一个虚拟节点,然后比较两个节点的大小,比较出结果了之后进行连接,需要注意的点当其中一个节点走到了null之后,另外一个节点剩下的值也需要拼接到dummy节点,因为另外一个node没有指到null,还没有走完。
class ListNode {
val: number
next: ListNode | null
constructor(val?: number, next?: ListNode | null) {
this.val = (val===undefined ? 0 : val)
this.next = (next===undefined ? null : next)
}
}
let A = new ListNode(1)
let B = new ListNode(2)
let C = new ListNode(4)
let D = new ListNode(1)
let E = new ListNode(3)
let F = new ListNode(4)
A.next = B
B.next = C
D.next = E
E.next = F
function printLinkedNode(node: ListNode) {
let str = ''
while(node) {
if(node) {
str+=node.val+'->'
}
node = node.next
}
console.log(str)
}
function mergeTwoLists(list1: ListNode | null, list2: ListNode | null): ListNode | null {
let Dummy = new ListNode();
let A = list1;
let B = list2;
let C = Dummy;
while(A && B) {
if(A.val<B.val) {
C.next = A;
A = A.next;
} else {
C.next = B;
B = B.next;
}
C = C.next;
}
if(A) {
C.next = A
}
if(B) {
C.next = B
}
return Dummy.next;
}
mergeTwoLists(A,D)