Leetcode-88. 合并两个有序数组

题目描述:

给定两个有序整数数组 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的开头



©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容