21. Merge Two Sorted Lists Add to List
DescriptionHintsSubmissionsSolutions
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
/**
* Created by happy on 17/5/14.
*/
public class MergeTwoSortedLists {
//非递归方法
public ListNode mergeTwoListsII(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0);
ListNode pNew=head;
while(l1!=null&&l2!=null){
if(l1.val<l2.val){
pNew.next=l1;
l1=l1.next;
}else {
pNew.next=l2;
l2=l2.next;
}
pNew = pNew.next;
}
if(l1!=null){
pNew.next=l1;
}
if(l2!=null){
pNew.next=l2;
}
//返回head.next;
return head.next;
}
//递归方法
public ListNode mergeTwoLists(ListNode l1, ListNode l2){
if(l1==null) return l2;
if(l2==null) return l1;
if(l1.val>l2.val){
//l2.next
l2.next= mergeTwoLists(l1,l2.next);
return l2;
}else{
//l2.next
l1.next= mergeTwoLists(l1.next,l2);
return l1;
}
}
}
88. Merge Sorted Array Add to List
DescriptionHintsSubmissionsSolutions
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
public static void merge(int[] nums1, int m, int[] nums2, int n) {
int i=m-1,j=n-1,k=m+n-1;
while(i>=0&&j>=0){
if(nums1[i]>nums2[j]){
nums1[k--]=nums1[i--];
}else{
nums1[k--]=nums2[j--];
}
}
while(j>=0){
nums1[k--] = nums2[j--];
}
}