原文java解法
原文有一点错误,就是在while循环的时候条件错误
&&应该改成||
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中*,*使 nums1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
#include <iostream>
using namespace std;
int main()
{
int a[6] = { 1,2,3,0,0,0 };
int b[3] = { 2,5,6 };
int len2 = sizeof(b) / sizeof(b[0]) - 1;
int len1 = sizeof(a) / sizeof(a[0]) - len2 - 2;//两个指针 len1 len2
int total = sizeof(a) / sizeof(a[0]) - 1;
while (len1 > 0 || len2 > 0)
{
if (b[len2] >= a[len1])
a[total--] = b[len2--];
else
a[total--] = a[len1--];
}
for (int i = 0; i < 6; i++)
cout << a[i] << " ";
return 0;
}