一、题目

二、题目分析
1.双指针:为什么要这么写?按照题目地说明:合并后地节点是递增地,所以把两个链表的节点进行比较把最小的值放入到一个新的数组里,然后把数组用FOR循环变成链表形式输出
2.我们利用双指针,再运行的过程中,肯定会有一个链表变成null,另一个链表就无法比较,所以我们最初可以用 if 进行判断哪个链表为null
三、代码
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */ var mergeTwoLists = function(l1, l2) { let tmp = new Array(); if(l1 == null){ return l2; } if(l2 == null){ return l1; } while( l1 != null && l2 !=null ){ if(l1.val <= l2.val){ tmp.push(l1); l1 = l1.next; }else{ tmp.push(l2); l2 = l2.next; } } if( l1 == null && l2!=null ){ tmp.push(l2); }else{ tmp.push(l1); } for(let i = 0; i<tmp.length-1; i++){ tmp[i].next = tmp[i+1]; } return tmp[0]; };
四、代码优化
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */ var mergeTwoLists = function(l1, l2) { let tmp = new ListNode(0); let p = tmp; while(l1 && l2){ if(l1.val <= l2.val){ p.next = l1; l1 = l1.next; }else{ p.next = l2; l2 = l2.next; } p = p.next; } if( l1 == null && l2 != null ){ p.next = l2; }else{ p.next = l1; } return tmp.next; };
                    
                
                
            
        
浙公网安备 33010602011771号