#include "soln.hpp" #include using std::vector; void Solution::merge(vector &nums1, int m, vector &nums2, int n) { int arr1_p = 0, arr2_p = 0; vector result = vector(m + n); for (int i = 0; i < m + n; i++) { // second array depleted if (arr2_p >= n) { result[i] = nums1[arr1_p++]; } // first array depleted else if (arr1_p >= m) { result[i] = nums2[arr2_p++]; } // nums2 elem greater, take from nums1 else if (nums2[arr2_p] > nums1[arr1_p]) { result[i] = nums1[arr1_p++]; } // nums1 elem greater, take from nums2 else if (nums2[arr2_p] <= nums1[arr1_p]) { result[i] = nums2[arr2_p++]; } } nums1 = result; }; bool Solution::test(vector &nums1, int m, vector &nums2, int n, vector &answer) { vector nums1_copy(nums1); merge(nums1_copy, m, nums2, n); return answer == nums1_copy; }