<LeetCode OJ> 53. Maximum Subarray
来源:互联网 发布:cda数据分析师证 编辑:程序博客网 时间:2024/05/29 08:38
题目翻译:
在数组中找到连续的子数组(包含至少一个数字),他的和是所有子数组最大的。
例如,给定的数组[−2,1,−3,4,−1,2,1,−5,4 ],
的子数组[ 4,−1,2,1 ] has the largest sum = 6。
分析:
典型的动态规划问题:
定义子问题:tmpSum[i]为以第i个元素结尾的最大连续子数组和
很显然在for循环遍历的过程中,只有两种情况:
1)tmpSum[i]重新以当前元素nums[i]开始
2)tmpSum[i]继续累加,即当前元素nums[i]+tmpSum[i-1]
在这里,实际上可以将tmpSum数组省去,直接用一个变量递推即可,因为只和前一次结果相关。
通俗的理解就是:
在加上当前nums[i]之前,如果tmpSum是小于0的,那么说明tmpSum起副作用,需要重新寻找起始数开始累加,
即重新以当前nums[i]为起始值开始累加,
class Solution {public: int maxSubArray(vector<int>& nums) { int maxSum=INT_MIN,tmpSum=0; for(int i=0;i<nums.size();i++) { tmpSum=max(tmpSum+nums[i],nums[i]);//连续累加时的两种情况 maxSum=max(maxSum,tmpSum);//更新最大值 } return maxSum; }};
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50422224
原作者博客:http://blog.csdn.net/ebowtang
1 0
- <LeetCode OJ> 53. Maximum Subarray
- LeetCode OJ:Maximum Subarray
- [LeetCode OJ]Maximum Subarray
- LeetCode OJ Maximum Subarray
- leetcode oj java 53. Maximum Subarray
- [leetcode oj]Maximum Product Subarray
- LeetCode OJ Maximum Product Subarray
- 六、[LeetCode OJ]Maximum Subarray
- [LeetCode OJ]Maximum Product Subarray
- LeetCode OJ-53.Maximum Subarray(最大连续子数组和)
- [LeetCode]53.Maximum Subarray
- LeetCode --- 53. Maximum Subarray
- [Leetcode] 53. Maximum Subarray
- [leetcode] 53.Maximum Subarray
- 【leetcode】53. Maximum Subarray
- [leetcode] 53.Maximum Subarray
- 【leetcode】53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- Linux内存管理原理
- 【经典算法】:求一个字符串的主元素(o(n)复杂度)
- 南京大数据技术Meetup第四次活动
- 任正非最新访谈: 如果企业收留这类人, 距离死亡就不远了
- Android startService 和 bindService
- <LeetCode OJ> 53. Maximum Subarray
- 声明一个3行4列的二维数组,求出数组中鞍点及其所在的行,列坐标(鞍点:即该位置上的元素在该行中最大,在该列中最小(也可能没有鞍点))
- 马士兵Java课堂笔记-6-容器Collection接口remove方法中判断是否相等并删除问题
- 在线生成简单二维码图片
- 线性拟合——从最大似然估计到平方误差到huber loss
- Python笔记-均值列表
- 20150916谱聚类.md(图片版)
- 【代码提取】提取一个文件夹里面的所有Java文件的类名函数名和变量名
- 拖动3D物体主要代码