From 4c297b4524e6d28c96d07dca3c59ebd753c5e039 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Tue, 29 Sep 2026 13:22:10 -0400 Subject: [PATCH] feat(work): add Maximum Subarray solution (LeetCode 53) --- work/1/Medium/Array/53.maximum-subarray.py | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 work/1/Medium/Array/53.maximum-subarray.py diff --git a/work/1/Medium/Array/53.maximum-subarray.py b/work/1/Medium/Array/53.maximum-subarray.py new file mode 100644 index 0000000..e691352 --- /dev/null +++ b/work/1/Medium/Array/53.maximum-subarray.py @@ -0,0 +1,58 @@ +""" +53. Maximum Subarray +Difficulty: Medium +https://leetcode.com/problems/maximum-subarray/ + +────────────────────────────────────────────────── + +Given an integer array nums, find the subarray with the largest sum, +and return its sum. + + + +Example 1: + +Input: nums = [-2,1,-3,4,-1,2,1,-5,4] +Output: 6 +Explanation: The subarray [4,-1,2,1] has the largest sum 6. + +Example 2: + +Input: nums = [1] +Output: 1 +Explanation: The subarray [1] has the largest sum 1. + +Example 3: + +Input: nums = [5,4,-1,7,8] +Output: 23 +Explanation: The subarray [5,4,-1,7,8] has the largest sum 23. + + + +Constraints: + + • 1 <= nums.length <= 10^5 + + • -10^4 <= nums[i] <= 10^4 + + + +Follow up: If you have figured out the O(n) solution, try coding +another solution using the divide and conquer approach, which is more +subtle. +""" + + +class Solution: + def maxSubArray(self, nums: list[int]) -> int: + best, total = nums[0], nums[0] + + for i in range(1, len(nums)): + if total < 0: + total = nums[i] + else: + total = total + nums[i] + best = max(best, total) + + return best