leetcode 88

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 };
原文地址:https://www.cnblogs.com/shellfishsplace/p/5861168.html