面试题31——连续子数组的最大和
2015-07-29 14:30
531 查看
题目描述
输入一个数组,有正数也有负数,求连续子数组的最大和。解题思路
典型动态规划设f(i) 表示 以i位置结尾的子数组和,那么有:
递推式:f(i) = max{ f(i-1) + array[i], array[i] }
初值:f(0) = array[0]
实现代码
class Solution { public: int FindGreatestSumOfSubArray(vector<int> array) { if(array.empty()) return 0; int retMax=INT_MIN; int len = array.size(); vector<int> ans(len,INT_MIN); ans[0] = array[0]; retMax = ans[0]; for(int i=1; i<len; i++) { ans[i] = getMax( (ans[i-1] + array[i]), array[i]); if(ans[i] > retMax) retMax = ans[i]; } return retMax; } int getMax(int a, int b) { return a>b?a:b; } };
相关文章推荐
- 黑马程序员——Java基础——异常体系
- 面试题30——最小的k个数
- 黑马程序员--反射Reflect
- 关于java子类重写的一道面试题
- 程序员,为什么千万不要重写代码?
- 为什么软件工程师应该养成写作的习惯?
- 浅谈用力不用脑的程序员:你为什么蹉跎这么多年
- 黑马程序员--Java--正则和反射
- 2016校招内推 -- 腾讯SNG前端 -- 面试经历
- 黑马程序员--Java--集合
- 黑马程序员--java--异常
- 黑马程序员--java--多态和内部类
- 黑马程序员--java--继承和接口
- 黑马程序员--java--两种设计模式
- 百度面试题 号码找到符合条件
- 2016校招内推 -- 阿里巴巴前端 -- 四面面试经历
- 程序员笔试面试--数据库知识
- 面试的时候的一些记录 - 不断更新
- 从武侠小说到程序员面试
- 阿里面试题---------关于html标签中物理标记和逻辑标记区别