微信小程序选项卡功能开发步骤与方法全解析
478
2022-10-24
53. Maximum Subarray
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],Output: 6Explanation: [4,-1,2,1] has the largest sum = 6.
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 { public int maxSubArray(int[] nums) { int maxSum = Integer.MIN_VALUE; int curSum = 0; int left = 0, right = 0; while (right < nums.length) { curSum += nums[right]; maxSum = Math.max(maxSum, curSum); right++; if (curSum < 0) { curSum = 0; left = right; } } return maxSum; }}
public class Solution { public int maxSubArray(int[] nums) { int currSum = nums[0], maxSum = nums[0]; for(int i = 1; i < nums.length; i++) { currSum = (currSum < 0) ? nums[i] : (currSum + nums[i]); if (currSum > maxSum) { maxSum = currSum; } } return maxSum; }}
class Solution: def maxSubArray(self, nums: List[int]) -> int: res = nums[0] cur = nums[0] for i in range(1, len(nums)): cur += nums[i] if cur < nums[i]: cur = nums[i] res = max(res, cur) return res
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~