#include <iostream>
#include <vector>
#include <algorithm>
class Solution {
public:
std::vector<int> findUnion(const std::vector<int>& nums1, const std::vector<int>& nums2) {
std::vector<int> result;
int i = 0, j = 0;
while (i < nums1.size() && j < nums2.size()) {
if (nums1[i] < nums2[j]) {
result.push_back(nums1[i]);
i++;
} else if (nums1[i] > nums2[j]) {
result.push_back(nums2[j]);
j++;
} else {
result.push_back(nums1[i]);
i++;
j++;
}
}
while (i < nums1.size()) {
result.push_back(nums1[i]);
i++;
}
while (j < nums2.size()) {
result.push_back(nums2[j]);
j++;
}
return result;
}
};
int main() {
Solution solution;
std::vector<int> nums1 = {1, 2, 2, 3};
std::vector<int> nums2 = {2, 3, 4};
std::vector<int> result = solution.findUnion(nums1, nums2);
std::cout << "Union of the two arrays: ";
for (int num : result) {
std::cout << num << " ";
}
return 0;
}