Maximum Subarray
Problem Statement
Find the contiguous subarray with the largest sum in a given integer array.
Example: nums = [-2,1,-3,4,-1,2,1,-5,4] → Output: 6 ([4,-1,2,1])
Approach 1: Brute Force
Explanation: Consider all subarrays and calculate sum.
Time Complexity: O(n²)
Space Complexity: O(1)
max_sum = -∞ for i in 0..n-1: sum=0 for j in i..n-1: sum += nums[j] max_sum = max(max_sum,sum) return max_sum
Approach 2: Prefix Sum
Explanation: Use prefix sums to compute subarray sums efficiently.
Time Complexity: O(n²)
Space Complexity: O(n)
prefix[0]=0 for i in 1..n: prefix[i]=prefix[i-1]+nums[i-1] max_sum=-∞ for i in 0..n-1: for j in i..n-1: max_sum = max(max_sum, prefix[j+1]-prefix[i])
Approach 3: Kadane’s Algorithm (Optimal)
Explanation: Keep running sum; reset if sum < 0.
Time Complexity: O(n)
Space Complexity: O(1)
max_sum=nums[0] current_sum=nums[0] for i in 1..n-1: current_sum = max(nums[i], current_sum+nums[i]) max_sum = max(max_sum, current_sum) return max_sum