第十周 简单的动态规划
2017-05-01 16:55
141 查看
算法题目 : Maximum Subarray
Add to List算法题目描述:
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.
算法分析:
刚开始做动态规划的题目,感觉一头雾水,根本无从下手。就开始从网上找答案,找到了很多,但是有一个很简洁的。自认为是很简洁高效的一段代码,但是理解起来可能有难度。
下面这段代码的复杂度是O(n),主要思想就是定义两个变量res和curSum,其中res保存最终要返回的结果,即最大的子数组之和,curSum初始值为0,每遍历一个数字num,比较curSum + num和num中的较大值存入curSum,然后再把res和curSum中的较大值存入res,以此类推直到遍历完整个数组,可得到最大子数组的值存在res中
算法代码(C++):
class Solution { public: int maxSubArray(vector<int>& nums) { int res = INT_MIN, curSum = 0; for (int num : nums) { curSum = max(curSum + num, num); res = max(res, curSum); } return res; } };
相关文章推荐
- 动态规划-------一个简单爬梯子问题
- CUGB 1009 DP简单动态规划,此题一开始就结了很久,WA了9次对于刚开始学DP的我打击很大,最后发现原来是方法弄错了,题意没完全弄懂!看了大牛的文章才知道,差距啊!还得好好努力。
- 一个简单的动态规划题
- 【算法】简单动态规划——三逆数的O(N^2)解法!
- 【练习09】简单动态规划 1004 命运
- pku1157-------LITTLE SHOP OF FLOWERS(简单动态规划题:摆放鲜花使审美价值达到最高)
- 【练习09】简单动态规划 1006 数塔
- 关于一些简单典型的动态规划
- foj 1004 Number Triangle【简单动态规划】
- Nyoj 492 骨牌铺方格[简单动态规划||斐波那契数列]
- CUGB 1050 题解动态规划简单题,这是我学会动态规划后做的第三道题比起前两道明显要顺手的多!秩序套用一下代码末班就行了。
- 简单动态规划——电路布线
- 简单的动态规划dp
- 【练习09】简单动态规划 1001 最大连续子序列
- HDU 2084 数塔 (C++) (简单的动态规划)
- poj2479_简单动态规划
- 一道简单但是经典的动态规划题
- hdu 1176 简单动态规划
- poj1221简单的动态规划
- 【算法】简单动态规划——三逆数的O(N^2)解法!