最大连续子数组
来源:互联网 发布:知乎药丸 编辑:程序博客网 时间:2024/06/04 19:03
本总结是是个人为防止遗忘而作,不得转载和商用。
题目
给定一个数组A[0,…,n-1],求A的连续子数组,使得该子数组的和最大。
如:数组A:1, -2, 3,10, -4, 7, 2, -5中,子数组3, 10, -4, 7, 2的和最大。
思路
将i从0遍历到n-1,假设现已经找到以第i项为结尾的最大子数组,假设它的和是Si,然后想看看添加第i+1项后的最大子数组Si+1。
于是就看看Si:
若Si> 0:则Si+1 = a[i+1] + Si
若Si< 0:则Si+1 = a[i+1]
即:Si+1= max(a[i+1] + Si, a[i+1])
初始化:S[0] =A[0]
进一步
既然我计算Si+1时只需要看Si,那我就不用在保存第i+1项之前的数组了,直接用一个数代替Si就好。
时间复杂度
O(n)
0 0
- 最大连续子数组
- 最大连续子数组
- 最大连续子数组
- 最大连续子数组
- 最大连续子数组
- 最大连续子数组
- 最大连续子数组
- 最大连续子数组
- 连续子数组最大和
- 连续最大子数组和
- 连续子数组最大和
- 最大连续子数组和
- 连续子数组最大和
- 最大连续子数组和
- 最大连续子数组和
- 最大连续子数组和
- 最大连续子数组和
- 最大连续子数组和
- Android在listview添加checkbox实现
- UNDO相关问题总结(六)
- linux syslog详解
- Unity+ListJson
- 类装载器学习
- 最大连续子数组
- [Hive]客户端几种数据导入方式
- AndroidStudio怎样导入library项目开源库
- linux用户&群组&权限
- Android Intent和Intent构造器
- Gulp开发教程(翻译)
- 简单DP HDOJ 1003 MAX SUM
- windows 7 Shell_NotifyIcon 使用的问题
- 安卓中控件跟随手指移动