[Medium]Maximum Subarray
来源:互联网 发布:智通作图软件 编辑:程序博客网 时间:2024/06/03 21:11
问题:
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.
解法:
采用动态规划算法和分治算法。
sum用来存储从某个数开始的子数组的和。
maxsum用来存储某个数之前的子数组的最大子数组的和。
sum[n]=max(nums[n],sum[n-1]+nums[n])
maxsum[n]=max(sum[n],maxsum[n-1])
根据以上两条公式,代码如下,算法的时间复杂度和空间复杂度均为O(n);
源码:
class Solution {public: int maxSubArray(vector<int>& nums) { int maxsum=nums[0]; int sum=maxsum; for(int i=1;i<nums.size();i++) { if(sum>=0)sum+=nums[i]; else sum=nums[i]; if(sum>maxsum)maxsum=sum; } return maxsum; }};
0 0
- 53. Maximum Subarray #Medium
- [Medium]Maximum Subarray
- [Medium]Maximum Product Subarray
- 【LeetCode】53. Maximum Subarray (Medium)
- Medium 53题 Maximum Subarray
- (Leetcode)53. Maximum Subarray(medium)
- 152. Maximum Product Subarray -Medium
- 152. Maximum Product Subarray Medium
- [Leetcode 152, Medium] Maximum Product Subarray
- 【Leet Code】53. Maximum Subarray---Medium
- 【Leet Code】152. Maximum Product Subarray---Medium
- LeetCode-53-Maximum Subarray(DP/分治)-Medium
- Leetcode 152. Maximum Product Subarray (Medium) (cpp)
- Leetcode 53. Maximum Subarray (Medium) (cpp)
- 53. Maximum Subarray 难度:medium 类别:分治
- LeetCode解题报告 53. Maximum Subarray [medium]
- Leetcode 53. Maximum Subarray (Medium) (java)
- Medium 152题 Maximum Product Subarray
- 算法竞赛入门训练指南 exe_1
- oracle约束知识
- 浮想联翩后自我脑暴的罗马帝国
- ViewStub的简单应用
- Android app引导页(背景图片切换加各个页面动画效果)
- [Medium]Maximum Subarray
- 第五章 servlet容器
- linux线程-生产者/消费者
- 封装:给程序
- Vue.js系列之vue-resource(6)
- 在Android里,应该如何在代码中获取attr属性的值
- 数据结构教程(第四版)P85~87//队列的链式存储结构
- BeanFactory中Bean的生命周期
- 92. Reverse Linked List II**