88. Merge Sorted Array
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.
将两个已排序的的数列前m位和前n位组合成一个已排序的数列,并将新数列存入nums1中。
需要考虑nums1是否有足够的空间存放新的数列。
代码如下:
1 class Solution { 2 public: 3 void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { 4 int tmp; 5 for(int i = 0; i < m; i++) 6 { 7 if(nums1.size() == 0 || nums2.size() == 0) 8 { 9 break; 10 } 11 if(nums1[i] > nums2[0]) 12 { 13 tmp = nums1[i]; 14 nums1[i] = nums2[0]; 15 nums2[0] = tmp; 16 for(int j = 0; j < n-1; j++) 17 { 18 if(nums2[j] > nums2[j+1]) 19 { 20 tmp = nums2[j+1]; 21 nums2[j+1] = nums2[j]; 22 nums2[j] = tmp; 23 } 24 else 25 { 26 break; 27 } 28 } 29 } 30 } 31 for(int i = 0; i < n; i++) 32 { 33 if(nums2.size() == 0) 34 { 35 break; 36 } 37 if(nums1.size() > m) 38 { 39 nums1[m] = nums2[i]; 40 m ++; 41 } 42 else 43 { 44 nums1.push_back(nums2[i]); 45 } 46 } 47 } 48 };