合并链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有结点组成的。
示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
思路:比较当前两个元素大小,小的添入链表。循环进行,直至链表为空
注意⚠️:处理链表的本质,是处理链表结点之间的指针关系。
/*** @param {ListNode} l1* @param {ListNode} l2* @return {ListNode}*/const mergeTwoLists = function(l1, l2) {// 定义头结点,确保链表可以被访问到let head = new ListNode()// cur 这里就是咱们那根“针”let cur = head// “针”开始在 l1 和 l2 间穿梭了while(l1 && l2) {// 如果 l1 的结点值较小if(l1.val<=l2.val) {// 先串起 l1 的结点cur.next = l1// l1 指针向前一步l1 = l1.next} else {// l2 较小时,串起 l2 结点cur.next = l2// l2 向前一步l2 = l2.next}// “针”在串起一个结点后,也会往前一步cur = cur.next}// 处理链表不等长的情况cur.next = l1!==null?l1:l2// 返回起始结点return head.next};
