思路:将nums2与nums1中的元素从后往前比较,放到nums1的最后,如果nums1的元素没了,就将nums2剩下的元素放到nums1中 ,同理将nums1中剩下的元素放到nums1中。
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if (n == 0)
return;
int index = m + n - 1;
int x = m - 1;
int y = n - 1;
while (x >= 0 && y >= 0)
{
if (nums1[x] > nums2[y])
{
nums1[index--] = nums1[x--];
}
else
{
nums1[index--] = nums2[y--];
}
}
if (y >= 0)
{
while (y >= 0)
{
nums1[index--] = nums2[y--];
}
}
if (x > 0)
{
while (x >= 0)
{
nums1[index--] = nums1[x--];
}
}
}
};