class Solution { public int maxSubArray(int[] nums) { int ans = nums[0] ; int n = nums.length; int flag [] = new int[n]; flag[0] = nums[0]; for (int i = 1 ; i < n ; i++ ) { flag[i] = Math.max( flag[i-1] + nums[i],nums[i]); ans = Math.max(flag[i],ans); } return ans; } }
改进:
class Solution { public int maxSubArray(int[] nums) { int ans = nums[0] ; int n = nums.length; int flag = nums[0]; for (int i = 1 ; i < n ; i++ ) { flag = Math.max( flag + nums[i],nums[i]); ans = Math.max(flag,ans); } return ans; } }
C
int maxSubArray(int* nums, int size) { int sum = 0 ; int max = INT_MIN; for (int i = 0 ; i < size ; i++){ if(sum>=0) sum += nums[i]; else sum = nums[i]; if(sum>max) max = sum; } return max; }
Python
class Solution: def maxSubArray(self, nums: List[int]) -> int: max = nums[0] sum = nums[0] for i in range(1,len(nums)): if sum>=0: sum = sum + nums[i] else : sum = nums[i] if(max < sum): max = sum return max