二つの秩序チェーンが一つの秩序チェーンに結合されています.


なんで面接の時に剥がせないですか?!!o(╥╥)o構想:2つのチェーンの最初の数を比較して、小さいものを新しいチェーンに追加して、その後、ポインタを後ろに移動して、2番目の数をもう一つのチェーンの最初の数と比較して、これに類推します.そのチェーンの数が新しいリストに追加されて、そのチェーンの針が後ろに移動します.
	/*    
	{
		value:1,
		next:{...}
	}
	*/
	//    
	function merge(p1,p2){
		let next={};//      
		let result=next; //      
		while(p1!=null&&p2!=null){
			let newNode={value:null,next:null}; //     
			let a=p1.value;
			let b=p2.value;
			if(a<b){
				next.next=newNode;   //             
				newNode.value=a;
				next=newNode; //         
				p1=p1.next;
			}else{
				next.next=newNode;
				newNode.value=b;
				next=newNode;
				p2=p2.next;
			}
		}
		//         ,                
		if(p2!=null){
			while(p2!=null){
				let newNode={value:null,next:null};
				next.next=newNode;
				newNode.value=p2.value;
				next=newNode;
				p2=p2.next;
			}
			
		}
		if(p1!=null){
			while(p1!=null){
				let newNode={value:null,next:null};
				next.next=newNode;
				newNode.value=p1.value;
				next=newNode;
				p1=p1.next;
			}
		}
		return result.next;
	}
	//       
	function print(p){
		let arr=[];
		while(p!=null){
			arr.push(p.value);
			p=p.next;
		}
		return arr.join('');
	}
	//    
	let p1={
		value:1,
		next:{
			value:2,
			next:{
				value:5,
				next:null
			}
		}
	}
	let p2={
		value:3,
		next:{
			value:4,
			next:{
				value:7,
				next:{
					value:9,
					next:null
				}
			}
		}
	}
	let p=merge(p1,p2);
	console.log(print(p));//1234579
昇華版
 function ListNode(val) {
      this.val = val;
      this.next = null;
 }
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var mergeTwoLists = function(l1, l2) {
		let curr=new ListNode(null);
		let h=curr;
		while(l1!=null||l2!=null){
			if(l1==null&&l2!=null){
				curr.next=new ListNode(l2.val);
				curr=curr.next;
				l2=l2.next;
			}else if(l2==null&&l1!=null){
				curr.next=new ListNode(l1.val);
				curr=curr.next;
				l1=l1.next;
			}else{
				if(l2.val<=l1.val){
					curr.next=new ListNode(l2.val);
					curr=curr.next;
					l2=l2.next;
				}else{
					curr.next=new ListNode(l1.val);
					curr=curr.next;
					l1=l1.next;
				}
			}
		}
		return h.next;
};