Skip to content

Maximum Sum Circular Subarray

LeetCode #918 - Maximum Sum Circular Subarray

Section titled “LeetCode #918 - Maximum Sum Circular Subarray”

Solve this classic coding interview problem efficiently using multiple approaches.

InputOutputExplanation
[example1]result1Explanation goes here
[example2]result2Explanation goes here
  • Standard LeetCode constraints
  • Refer to the official problem statement for exact details
ApproachTimeSpaceBest When
Total - MinO(n)O(1)Optimal — clever formula
Kadane CircularO(n)O(1)Alternative O(n)
Brute ForceO(n²)O(1)Learning
  • Pick Total - Min for the optimal solution — it is elegant and efficient.
  • Pick Kadane Circular for a pure Kadane extension.
  • Pick Brute Force if you are learning from scratch.
Optimal
Total - Min
O(n) time · O(1) space
Kadane Extended
Kadane Circular
O(n) time · O(1) space
Simple to Learn
Brute Force
O(n²) time · O(1) space
Section titled “Approach 1: Total - Minimum Subarray (Recommended)”
★ Recommended

The maximum circular sum is either the maximum non-circular sum OR the total sum minus the minimum subarray sum.

⏱ Time O(n) Single pass 💾 Space O(1) Constant
maximum_sum_circular_subarray_total_minus_minimum.py
from typing import List
def maximum_sum_circular_subarray_total_minus_minimum(nums: List[int]) -> int:
"""
Maximum Sum Circular Subarray - Total Minus Minimum approach.
Time: O(n), Space: O(1) or O(n) depending on approach
"""
pass
if __name__ == "__main__":
# Test cases
pass

Approach 2: Kadane’s Algorithm (Circular)

Section titled “Approach 2: Kadane’s Algorithm (Circular)”
🎯 Interview Favourite

Extend Kadane’s algorithm to handle the circular case by also tracking the minimum subarray.

⏱ Time O(n) Single pass 💾 Space O(1) Constant
maximum_sum_circular_subarray_kadane_circular.py
from typing import List
def maximum_sum_circular_subarray_kadane_circular(nums: List[int]) -> int:
"""
Maximum Sum Circular Subarray - Kadane Circular approach.
Time: O(n), Space: O(1) or O(n) depending on approach
"""
pass
if __name__ == "__main__":
# Test cases
pass
✓ Simple

Check all possible subarrays (including those that wrap around the circular array).

⏱ Time O(n²) All pairs 💾 Space O(1) Constant
maximum_sum_circular_subarray_brute_force.py
from typing import List
def maximum_sum_circular_subarray_brute_force(nums: List[int]) -> int:
"""
Maximum Sum Circular Subarray - Brute Force approach.
Time: O(n), Space: O(1) or O(n) depending on approach
"""
pass
if __name__ == "__main__":
# Test cases
pass