/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pHead1 ListNode类 
 * @param pHead2 ListNode类 
 * @return ListNode类
 */
function Merge( pHead1 ,  pHead2 ) {
    // write code here
    let l1=pHead1;
    let l2=pHead2;
    let node=new ListNode(0);
    let result=node;
    while(l1!=null && l2!=null){
        if(l1.val>l2.val){
            node.next=l2;
            l2=l2.next;
        } else {
            node.next=l1;
            l1=l1.next;
        }
        node=node.next;
    }
    node.next = l1 !== null ? l1 : l2;
    return result.next;
}
module.exports = {
    Merge : Merge
};

还有一种递归做法

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pHead1 ListNode类 
 * @param pHead2 ListNode类 
 * @return ListNode类
 */
function Merge( pHead1 ,  pHead2 ) {
    if (pHead1 == null) return pHead2
    if (pHead2 == null) return pHead1
    if(pHead1.val<pHead2.val){
        pHead1.next=Merge(pHead1.next,pHead2);
        return pHead1;
    }else {
        pHead2.next=Merge(pHead1,pHead2.next);
        return pHead2;
    }
        
}
module.exports = {
    Merge : Merge
};