首页 > 学院 > 开发设计 > 正文

【LeetCode题解】88. Merge Sorted Array

2019-11-06 06:42:24
字体:
来源:转载
供稿:网友

题意为给定两个排好序的数组num1和num2,使用归并排序的思想将这两个数组合为一个有序数组

题目中给出的提示信息,num1的size大于或等于m + n,十分有用,可以将num2中的元素归并到num1中

可以从后面开始考虑,即先考虑2个数组中最大的值,并放在下标m+n-1位处,然后向前以此类推

注意,需要两个变量index_1和index_2来记录下一步待比较的num1和num2数组元素的下标,给出比较部分的代码:

while(index_1 >= 0 && index_2 >= 0){    if(nums1[index_1] >= nums2[index_2])    {        nums1[index] = nums1[index_1];        index--;        index_1--;    }    else    {        nums1[index] = nums2[index_2];        index--;        index_2--;    }}注意,若以上部分执行完毕后,num2中仍有元素未参与比较(即为值最小的几个元素),需要执行:

while(index_2 >= 0){    nums1[index] = nums2[index_2];    index--;    index_2--;}若num1中的元素未比较完,则保持原下标不变即可,不需要执行另外的操作


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表