class Solution(object): ## 滑动窗口解法 ## 放弃负的左边窗口 def maxSubArray(self, nums): maxSub = nums[0] curSum = 0 for n in nums: if curSum < 0: curSum = 0 ## 放弃左边的子窗口,如果它们的总和为零 curSum = curSum + n maxSub = max(curSum, maxSub) return maxSub 这个算...
publicintmaxSubArray(int[]nums){intn=nums.length;int[]dp=newint[n];intmax=Integer.MIN_VALUE;for(intlen=1;len<=n;len++){for(inti=0;i<=n-len;i++){//直接覆盖掉前边对应的情况就行dp[i]=dp[i]+nums[i+len-1];//更新 maxif(dp[i]>max){max=dp[i];}}}returnmax;} 时间复杂度:...
3. 解法 1classSolution:2defmaxSubArray(self, nums: List[int]) ->int:3iflen(nums)<2:returnsum(nums)4res =nums[0] # 最终的子序列和的最大值5temp =[nums[0]] # 最初的子序列为第一个元素6foriinrange(1,len(nums)):7ifnums[i]+sum(temp)<nums[i]: # 关键:如果之前的元素加上当前...
classSolution{public:intmaxSubArray(vector<int>& nums){intn = nums.size();if(n ==0)return0;intret = nums[0], sum =0, min_sum =0;for(inti =0; i < n; ++i) { sum += nums[i]; ret =max(ret, sum - min_sum); min_sum =min(min_sum, sum); }returnret; } }; 思路3:...
the contiguous subarray[4,−1,2,1]has the largest sum =6. More practice: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle. 此题为经典的求连续子数组最大和问题,除了暴力的解法,想办法用O(n)时间来做。
the contiguous subarray[4,−1,2,1]has the largest sum =6. 代码: 1publicclassSolution {2publicintmaxSubArray(int[] nums)3{4intlen =nums.length;5intSubSum = nums[0];6intMaxSum = nums[0];7for(inti=1;i<len;i++)8{9SubSum=Math.max(nums[i],SubSum+nums[i]);10MaxSum=Math.ma...
publicclassSolution {publicintMaxSubArray(int[] nums) {if(nums.Length ==0)return0;intmax =int.MinValue;for(inti =0; i < nums.Length; i++){inttempSum=0;for(intj =i; j < nums.Length; j++){ tempSum+=nums[j];if(tempSum >max) ...
class Solution { public int maxSubArray(int[] nums) { int pre = 0, maxAns = nums[0]; for (int x : nums) { pre = Math.max(pre + x, x); maxAns = Math.max(maxAns, pre); } return maxAns; } } 方法2:分治 class Solution { public class Status { public int lSum, rSum, ...
classSolution{public:intmaxSubArray(vector<int>&nums){if(nums.size()==0)return0;returnhelper(nums,0,nums.size()-1);}inthelper(vector<int>&nums,int l,int r){if(l>r)returnINT_MIN;//注意此处不是返回0,比如{-2,-1},分治以后变为左中右n{},-1,{-2}三部分。左半部分{}应返回INT_MIN...
Lintcode41 Maximum Subarray solution 题解 【题目描述】 Given an array of integers, find a contiguous subarray which has the largest sum. Notice:The subarray should contain at least one number. 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。