1. Brute Force (Nested Loop Subarray Sum)
Intuition
Fix starting index i. Expand rightwards with index j, accumulating sum += nums[j]. As soon as sum >= target, update minLen = min(minLen, j - i + 1) and break.
Algorithm
- Step 1: Initialize
minLen = Infinity. - Step 2: For each i from 0 to n - 1:
- - Initialize
sum = 0. - - For each j from i to n - 1:
- -
sum += nums[j]. - - If
sum >= target:minLen = min(minLen, j - i + 1), break. - Step 3: Return
minLen == Infinity ? 0 : minLen.
All Subarrays Enumeration (O(N^2) Time)
2 of 2 questions left todayFirst subarray from start reaching target 7 has length 4
First subarray from start reaching target 7 has length 4.
#include <iostream>#include <vector>#include <algorithm> class Solution {public: int minSubArrayLen(int target, std::vector<int>& nums) { int n = nums.size(); int minLen = n + 1; for (int i = 0; i < n; i++) { int sum = 0; for (int j = i; j < n; j++) { sum += nums[j]; if (sum >= target) { minLen = std::min(minLen, j - i + 1); break; } } } return minLen > n ? 0 : minLen; }}; int main() { Solution sol; std::vector<int> nums = {2, 3, 1, 2, 4, 3}; std::cout << "Min Length: " << sol.minSubArrayLen(7, nums) << std::endl; return 0;}Time & Space Complexity
- Time complexity:
O(N^2)— Time complexity for Brute Force (Nested Loop Subarray Sum). - Space complexity:
O(1)— Space complexity for Brute Force (Nested Loop Subarray Sum).
Why Brute Force Doesn't Scale:
For N = 100,000, quadratic brute force takes 1010 operations (> 10s). The two-pointer sliding window runs in strict O(N) time with at most 200,000 pointer movements (< 3 ms).
For N = 100,000: Brute force takes ~10 billion operations; Sliding window takes ~200,000 operations (~50,000x faster).