本题来自与leetcode基础题之:合并两个有序数组
详情请点击88.合并两个有序数组
题目:
题目要求
简单分析:
根据题目呢,实现的就是将nums2数组中的元素合并到nums1数组中,因此nums1数组要将足够大,其次,想实现这个功能,我们可以用简单的归并思想。
那么什么是归并思想?看下面这个例子
下面有两个数组,nums1,nums2,咱们先设置两个变量,end1,end2,让这两个变量分别从数组的最后一项开始访问,判断两个变量值的大小,谁大,谁就放在num1数组的最后一项,并且进行向左移动。当其中一个变量减到数组下标小于0的位置,那么,就说明其中一个结束了,此时判断谁先结束,要是nums1先结束,那么要把nums2的数据弄过去,要是nums2先结束,那么nums2就不用做处理。
这就是大致思想,接下来用代码实现:
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--]; } }
运行结果:
可以看到没有出现报错,说明代码实现没有问题;
文章到这里就结束了,有什么问题可以随时私信我哦