合并两个有序数组c++简洁
时间: 2024-09-15 20:05:37 浏览: 15
合并两个有序数组是一个经典的编程问题,可以使用双指针法解决,这在 C++ 中非常直观。以下是合并两个有序数组的简洁 C++ 代码示例:
```cpp
#include <vector>
std::vector<int> mergeSortedArrays(std::vector<int>& nums1, std::vector<int>& nums2) {
std::vector<int> merged;
int i = 0, j = 0;
// 当两个数组还有元素未处理时
while (i < nums1.size() && j < nums2.size()) {
// 将较小的元素添加到结果数组,并移动对应的指针
if (nums1[i] <= nums2[j]) {
merged.push_back(nums1[i]);
i++;
} else {
merged.push_back(nums2[j]);
j++;
}
}
// 如果其中一个数组有剩余元素,直接添加到结果数组
while (i < nums1.size()) {
merged.push_back(nums1[i]);
i++;
}
while (j < nums2.size()) {
merged.push_back(nums2[j]);
j++;
}
return merged;
}
```
在这个函数中,我们首先初始化两个指针 `i` 和 `j` 分别指向两个输入数组的起始位置。然后,我们在两个数组都有元素的情况下比较当前元素,将较小的添加到 `merged` 数组并将相应的指针向前移动一位。最后,如果某个数组仍有剩余元素,我们将它们全部添加到 `merged`。