题目描述:
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化 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]
解法:
1.调用函数库arrcopy将两个数组合并为一个数组后再排序
2.双指针法 从前往后
将nums1数组元素复制到nums1_copy数组中
设置两个指针p1,p2分别指向nums1_copy数组中的第一个元素和nums2数组中的第一个元素
p指向结果数组nums1的第一个元素
比较nums1_copy[p1]和nums2[p2]的大小
前者大 将nums2[p2]的值填到nums1[p]中 p2++ p++
后者大 将nums1_copy[p1]的值填到nums1[p]中 p1++ p++
最终检查nums1_copy和nums2中是否有剩余元素 有的话加到nums1中
3.双指针法 从后往前
从结果数组nums1的末尾往前填充
比较nums1和nums2的末尾元素 谁大就填到nums1的末尾
最后如果nums2中还有元素没有填充,则直接加到nums1的开头