问题:
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列
方法:
创建两个指针pm和pn 分别指向两个数组的尾部,然后再创建一个指针i指向sum1空间尾部。
然后循环比较两个指针pm和pn指向值的大小,大的赋给i指针指向的位置。(ps:之所以一来指向尾部,是因为要是指向开头会出现覆盖数据)。
方法函数:
void merge(int* nums1, int m, int* nums2, int n) {
int pm=m-1, pn=n-1;
int i=m+n-1;
while (i>=0)
{
nums1[i] = nums1[pm] > nums2[pn] ? nums1[pm--] : nums2[pn--];
i--;
}
}
调试运行:
排序合并后: