1. Brute Force — Auxiliary Array Copy
Intuition
Copy all elements not equal to val into a temporary array, then copy them back to nums.
Algorithm
- Initialize an empty list
temp. - For each number
xinnums: - If
x != val, appendxtotemp. - Copy
tempelements back tonums[0 ... temp.length - 1]. - Return
temp.length.
Auxiliary Array Copy
2 of 2 questions left todayPhase 1 — Scan Index 0: nums[0] is 3
Phase 1 — Scan Index 0: nums[0] is 3. Compare with target val = 3. 3 == 3, so skip this element.
#include <iostream>#include <vector>using namespace std; // Brute Force: Auxiliary array copy (O(N) space)int removeElement(vector<int>& nums, int val) { vector<int> temp; for (int num : nums) { if (num != val) { temp.push_back(num); } } for (size_t i = 0; i < temp.size(); i++) { nums[i] = temp[i]; } return temp.size();} int main() { vector<int> nums = {3, 2, 2, 3}; int val = 3; int k = removeElement(nums, val); cout << "k = " << k << ", nums = ["; for (int i = 0; i < k; i++) { cout << nums[i] << (i + 1 < k ? ", " : ""); } cout << "]" << endl; return 0;}Time & Space Complexity
- Time complexity:
O(N^2)— Time complexity for Approach 1: Brute Force — Auxiliary Array Copy. - Space complexity:
O(1)— Space complexity for Approach 1: Brute Force — Auxiliary Array Copy.
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.