输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode node=new ListNode(-1);//定义一个虚拟节点
ListNode tmp=node;//tmp标记此虚拟节点
while(l1!=null&&l2!=null){
if(l1.val<l2.val){
tmp.next=l1;
l1=l1.next;
tmp=tmp.next;
}else{
tmp.next=l2;
l2=l2.next;
tmp=tmp.next;
}
}
if(l1!=null){
tmp.next=l1;
}
if (l2!=null){
tmp.next=l2;
}
return node.next;//返回除虚拟节点的链表
}
}
将问题化解为子问题
class Solution {
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;
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容