DP-Maximum Subarray
2015-11-16 22:53
134 查看
问题描述:
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array
the contiguous subarray
思路:
定义f(i)为array[0...i]的最大子数组。
状态转移方程:
f(i) = i; f(i - 1) <= 0
f(i) = f(i-1) + i; f(i - 1) > 0
解决:
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.
思路:
定义f(i)为array[0...i]的最大子数组。
状态转移方程:
f(i) = i; f(i - 1) <= 0
f(i) = f(i-1) + i; f(i - 1) > 0
解决:
class Solution { public: int maxSubArray(vector<int>& nums) { int maxSum = nums[0]; for (int i = 1; i < (nums.size()); i++) { if (nums[i-1] <= 0) nums[i] = nums[i]; else nums[i] = nums[i-1] + nums[i]; maxSum = max(maxSum, nums[i]); } return maxSum; } };
相关文章推荐
- 设计模式
- 有关于jQuery load方法在IE Chrome无法加载问题
- 修改Launcher3中的workspace中的应用图标的大小
- C++面向对象高级开发_极客班_第一节课笔记_section2
- Android 开源库StickyListHeadersListView来实现ListView列表分组效果
- UserInterface基本使用总结篇(一)
- Android 开源库StickyListHeadersListView来实现ListView列表分组效果
- android EditText组件
- OpenGL ES 从零开始系列9:动画基础和关键帧动画
- 选择问题及复杂度分析
- Codeforces Round #331 (Div. 2) B. Wilbur and Array
- linux常用命令
- 欢迎使用CSDN-markdown编辑器
- 2._尚硅谷_佟刚_JavaWEB_Servlet-2
- tomcat_server.xml配置说明
- MPI编译环境及编译器介绍
- C语言--归并排序算法实现
- 修改Launcher3的workspace的应用图标的行列数:
- iOS - 数据持久化---- NSUserDefaults & NSKeyedArchiver
- web项目中文乱码问题