1. Brute Force — Append & Sort
Intuition
Directly copy all n elements of nums2 into the tail of nums1 starting at index m, then sort the combined array.
Algorithm
- Loop
ifrom0ton - 1: -
nums1[m + i] = nums2[i]. - Sort
nums1in ascending order.
Brute force — concatenate and sort
2 of 2 questions left todayThe zero-filled suffix is capacity, not input data
The zero-filled suffix is capacity, not input data.
#include <algorithm>#include <iostream>#include <vector>using namespace std; // Brute Force: Copy nums2 to end of nums1 and sortvoid merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { for (int i = 0; i < n; i++) { nums1[m + i] = nums2[i]; } sort(nums1.begin(), nums1.end());} int main() { vector<int> nums1 = {1, 2, 3, 0, 0, 0}; vector<int> nums2 = {2, 5, 6}; merge(nums1, 3, nums2, 3); cout << "Output: ["; for (size_t i = 0; i < nums1.size(); i++) { cout << nums1[i] << (i + 1 < nums1.size() ? ", " : ""); } cout << "]" << endl; return 0;}Time & Space Complexity
- Time complexity:
O(N^2)— Time complexity for Approach 1: Brute Force — Append & Sort. - Space complexity:
O(1)— Space complexity for Approach 1: Brute Force — Append & Sort.
Why Brute Force Doesn't Scale:
For N = 105, quadratic O(N2) approaches require ~1010 operations, exceeding the standard 1-second CPU budget.
The optimal approach processes N elements in a single or logarithmic pass, completing in under 10ms with minimal memory footprint.