面试题:合并两个排序的链表
题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
方法1:递归
public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null){ return list2; } if(list2==null){ return list1; } if(list1.val<=list2.val){ list1.next=Merge(list1.next,list2); return list1; }else{ list2.next=Merge(list1,list2.next); return list2; } } }
方法2:循环
public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null){ return list2; } if(list2==null){ return list1; } ListNode mergeList=null; ListNode current=null; while(list1!=null&&list2!=null){ if(list1.val<=list2.val){ if(mergeList==null) mergeList=current=list1; else{ current.next=list1; current=current.next; } list1=list1.next; }else{ if(mergeList==null) mergeList=current=list2; else{ current.next=list2; current=current.next; } list2=list2.next; } } if(list1==null){ current.next=list2; }else{ current.next=list1; } return mergeList; } }