您的位置:首页 > 其它

let21 merge two linked list

2017-12-26 22:13 330 查看
合并两个有序链表

主题思想: 因为是有序的,这题有两种解法,递归、循环。

递归解法,代码比较简洁

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
if(l1.val<l2.val){
l1.next=mergeTwoLists(l1.next,l2);
return l1;
}else{
l2.next=mergeTwoLists(l1,l2.next);
return l2;
}

}


循环写法: 主要循环,需要判断什么时候截止。以及先有个头返回。

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {

ListNode head;
ListNode phead;
//写代码首先应该检查边界条件
ListNode node1=l1;
ListNode node2=l2;
if(l1==null) return l2;
if(l2==null) return l1;

if(node1.val<node2.val) {phead=node1;node1=node1.next;}
else {phead=node2;node2=node2.next;}

head=phead;
while(true){

if(node1==null){head.next=node2; break;}
if(node2==null){head.next=node1;break;}

if(node1.val<node2.val) {head.next=node1;node1=node1.next;}
else{head.next=node2;node2=node2.next;}
head=head.next;
}
return phead;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: