21.合并两个有序链表(简单)

思路:

新建一条新的链表,比较传入的2个链表的第一个节点,将较小值的传入新的链表

关键在于,声明新链表时,要创建2个指针,一个指头,一个随着过程变动

还要为传入的2个链表各自创建1一个随过程变动的指针

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1==null||l2==null){
            return l1==null?l2:l1;
        }
		ListNode head=new ListNode(0);
		ListNode tail=head;
		ListNode res1=l1;
		ListNode res2=l2;
		
		while(res1!=null&&res2!=null){
			if(res1.val<res2.val){
				tail.next=res1;
				res1=res1.next;
			}
			else{
				tail.next=res2;
				res2=res2.next;
			}
            tail=tail.next;
		}
		if(res1==null){
			tail.next=res2;
			
		}
		
		if(res2==null){
			tail.next=res1;
		}
		
		return head.next;
    }
}

分解:

            if(res1==null){
		tail.next=res2;		
	    }
		
	    if(res2==null){
		tail.next=res1;
	    }

1)以上代码简化地写出三元表达式:

tail.next=res1==null?res2:res1;

2)新链表的两个指针:headtail

l1和l2的指针:res1res2

猜你喜欢

转载自blog.csdn.net/di_ko/article/details/115062966