LeetCode88-简单-合并两个有序数组
Posted .阿Q.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode88-简单-合并两个有序数组相关的知识,希望对你有一定的参考价值。
思路:
首先思考,如果一个指针指nums1,一个指针指nums2;他俩开始比,大的放nums1,就会产生覆盖。那该怎么去做呢??
方法1:重开一个m+n大的数组....
方法2:(更好的方法)从后往前比较!
考虑两种情况 ————( 画图推一遍 )
AC代码:
//时间复杂度是O(N)
//空间复杂度是O(1)
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
int end1 = m-1,end2 = n-1;
int end = m+n-1;
while(end1 >= 0 && end2 >= 0)
if(nums1[end1] > nums2[end2])
nums1[end--] = nums1[end1--];
else
nums1[end--] = nums2[end2--];
while(end2 >= 0)
nums1[end--] = nums2[end2--];
以上是关于LeetCode88-简单-合并两个有序数组的主要内容,如果未能解决你的问题,请参考以下文章
⭐算法入门⭐《简单排序》简单02 —— LeetCode 88. 合并两个有序数组