Dynamic Programming21 sections · 916 units
Open in Course

LeetCode 53 Maximum Subarray Sum - Implementation

Kadane's algorithm

Kadane's algorithm maintains the maximum sum ending at each position. If adding the current element makes the sum negative, restart. Initialize current=0current = 0, best=best = -\infty. For each element: current=max(nums[i],current+nums[i])current = \max(nums[i], current + nums[i]), then best=max(best,current)best = \max(best, current). Example: [2,1,3,4,1,2,1,5,4][-2, 1, -3, 4, -1, 2, 1, -5, 4]. The maximum subarray is [4,1,2,1][4, -1, 2, 1] with sum 66. Time: O(n)O(n), Space: O(1)O(1). This is optimal for the problem.

Time complexity: O(n)O(n).

Space complexity: O(1)O(1).