88 Merge Sorted Array
2015-05-10 18:21
363 查看
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.
题意:合并两个有序列表。
解法一
由于是两个有序的数组,因此可以设计一个暂存数组,然后遍历两个数组,选择小的放到这个数组里(相等的要放进去两次)。
时间是271 ms
解法二
从nums1中寻找nums2中元素应该插入的位置,然后右移nums1的元素,将nums2中的元素插入。
时间265ms
两种解法的时间差不多。
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 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int[] tmp = new int[m+n]; int k = 0; int i = 0; int j = 0; while( i < m && j < n){ if(nums1[i] < nums2[j]){ tmp[k++] = nums1[i++]; }else if(nums1[i] > nums2[j]){ tmp[k++] = nums2[j++]; }else{ tmp[k++] = nums1[i]; tmp[k++] = nums2[j]; i++;j++; } } while(i < m){ tmp[k++] = nums1[i++]; } while(j < n){ tmp[k++] = nums2[j++]; } for(i = 0 ; i < m+n ; i ++){ nums1[i] = tmp[i]; } } }
时间是271 ms
解法二
从nums1中寻找nums2中元素应该插入的位置,然后右移nums1的元素,将nums2中的元素插入。
public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int N = n + m; int h = 0; for(int i = 0; i < n ; i ++){ boolean find = false; for(int j = h ; j < m; j ++){ if(nums1[j] > nums2[i]){ //将nums1中j及之后的元素一起后移 for(int k = m - 1 ; k >= j ; k -- ){ nums1[k + 1] = nums1[k]; } nums1[j] = nums2[i]; h = j + 1; m ++ ; find = true; break; } } if(!find){ break; } } if(m < N){ //nums2中的元素还有排序的元素 int count = N - m; for(int i = count ; i > 0 ; i--){ nums1[m++] = nums2[n - i]; } } } }
时间265ms
两种解法的时间差不多。
相关文章推荐
- 88. Merge Sorted Array
- 88. Merge Sorted Array LeetCode
- leetcode88:Merge Sorted Array
- [LeetCode-88] Merge Sorted Array(合并有序数组)
- 88 Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- (java)leetcode-88:Merge Sorted Array
- 88 Merge Sorted Array
- [88]Merge Sorted Array
- 88. Merge Sorted Array
- leetcode_question_88 Merge Sorted Array
- LeetCode(88) Merge Sorted Array
- [LeetCode]88 Merge Sorted Array
- 【LeetCode 88 】 Merge Sorted Array
- LeetCode - 21/23/88 - Merge Sorted Lists/Array
- LeetCode(88) Merge Sorted Array
- 88. Merge Sorted Array
- 88 Merge Sorted Array(归并排序Easy)
- LeetCode@Array_88_MergeSortedArray