用max 函数,把找到的最大的 curSum 赋值给 maxSub,从而找出最大的 maxSub; 由于只用一次遍历,故时间复杂度是 O(n)。 class Solution(object): ## 滑动窗口解法 ## 放弃负的左边窗口 def maxSubArray(self, nums): maxSub = nums[0] curSum = 0 for n in nums: if curSum < 0: curSum = 0 ...
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:...
Given an array of integers, find a contiguous subarray which has the largest sum. Notice:The subarray should contain at least one number. 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 注意:子数组最少包含一个数 【题目链接】Maximum Subarray 【题目解析】 O(n)就是一维DP. 假设A...
AI代码解释 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}三部分。左半部分{}应...
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]: # 关键:如果之前的元素加上当前的元素还比...
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...
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. 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。
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, ...
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) ...
max = Math.max(max, sum); }returnmax; } } 分治法 classSolution{publicintmaxSubArray(int[] nums){returndivide(nums,0, nums.length -1); }privateintdivide(int[] nums,intleft,intright){// 递归边界,数组中只剩一个数if(right == left) {returnnums[left]; ...