合并两个大小分别为m和n的正序数组,C++
时间: 2024-04-17 19:23:17 浏览: 18
下面是一个合并两个正序数组(大小分别为 m 和 n)的 C++ 示例代码:
```cpp
#include <iostream>
#include <vector>
std::vector<int> mergeArrays(std::vector<int>& nums1, int m, std::vector<int>& nums2, int n) {
std::vector<int> merged(m + n);
int i = m - 1, j = n - 1, k = m + n - 1;
while (i >= 0 && j >= 0) {
if (nums1[i] >= nums2[j]) {
merged[k] = nums1[i];
i--;
} else {
merged[k] = nums2[j];
j--;
}
k--;
}
while (j >= 0) {
merged[k] = nums2[j];
j--;
k--;
}
return merged;
}
int main() {
std::vector<int> nums1 = {1, 3, 5, 0, 0, 0};
std::vector<int> nums2 = {2, 4, 6};
int m = 3, n = 3;
std::vector<int> mergedArray = mergeArrays(nums1, m, nums2, n);
std::cout << "Merged Array: ";
for (int i = 0; i < mergedArray.size(); i++) {
std::cout << mergedArray[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
在示例代码中,我们使用了三个指针 `i`、`j` 和 `k` 分别指向数组 `nums1`、`nums2` 和 `merged` 的末尾。从两个数组的末尾开始比较元素,将较大的元素放入 `merged` 数组的末尾,并依次向前移动指针。重复这个过程,直到其中一个数组中的元素全部放入 `merged` 数组。
然后,如果 `nums2` 中还有剩余的元素,将其依次放入 `merged` 数组。
最后,返回合并后的 `merged` 数组。
在给定的示例中,`nums1` 是 `[1, 3, 5, 0, 0, 0]`,`nums2` 是 `[2, 4, 6]`,合并后的数组是 `[1, 2, 3, 4, 5, 6]`。