1. Merge and Find Median
Intuition
Allocate an array of size m+n. Merge nums1 and nums2 using two pointers. Return middle element if odd, or average of two middle elements if even.
When to apply: Basic baseline check.
Algorithm
- Step 1: Merge nums1 and nums2 into array merged of size m+n.
- Step 2: If (m+n) % 2 == 1 return merged[(m+n)/2].
- Step 3: Else return (merged[(m+n)/2 - 1] + merged[(m+n)/2]) / 2.0.
#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std; class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { vector<int> merged; int i = 0, j = 0; while (i < (int)nums1.size() && j < (int)nums2.size()) { if (nums1[i] <= nums2[j]) merged.push_back(nums1[i++]); else merged.push_back(nums2[j++]); } while (i < (int)nums1.size()) merged.push_back(nums1[i++]); while (j < (int)nums2.size()) merged.push_back(nums2[j++]); int total = merged.size(); if (total % 2 == 1) return merged[total / 2]; return (merged[total / 2 - 1] + merged[total / 2]) / 2.0; }}; int main() { // Sample driver execution cout << "Execution completed successfully." << endl; return 0;} Time & Space Complexity
- Time complexity:
O(m + n)— Creates merged array of size m+n. - Space complexity:
O(m + n)— O(m+n) auxiliary storage.