这题跟Leetcode-21: Merge Two Sorted Lists 的解法差不多。我的方法是两个vector从后面比大小,大的那个就放到nums1的后面。
#include <iostream>
#include <vector>
using namespace std;
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int p1=m-1, p2=n-1;
nums1.resize(m+n); //this line is not needed to AC
while(p1>=0|| p2>=0) {
if (p2<0 || (p1>=0 && (nums1[p1]>=nums2[p2]))) {
nums1[p1+p2+1]=nums1[p1];
p1--;
} else if (p1<0 || (p2>=0 && (nums1[p1]<nums2[p2]))){
nums1[p1+p2+1]=nums2[p2];
p2--;
}
}
}
int main()
{
vector<int> nums1={3,4,4,7};
vector<int> nums2={1,2,8};
merge(nums1, nums1.size(), nums2, nums2.size());
for (int n:nums1) cout<<n<<" "<<endl;
return 0;
}
本文介绍了一种将两个已排序数组合并为一个新排序数组的方法。通过使用C++实现,该算法从两个数组的末尾开始比较并选取较大的元素填充到目标数组的末尾,最终实现了两数组的有效合并。
1226

被折叠的 条评论
为什么被折叠?



