编程之美 2.14 求数组的子数组之和的最大值
来源:互联网 发布:java回调函数的作用 编辑:程序博客网 时间:2024/06/06 08:42
用sum表示当前子数组的和,用Max表示子数组之和的最大值。
初始化:将sum和Max初始化为数组中的第一个元素的值。
思路:
遍历数组,依次判断数组中的每一个元素的值 将其与0作比较,如果其大于等于0,再判断之前子数组的和是否大于0,如果之前子数组的和小于0,则当前元素即为当前子数组之和。如果之前子数组之和大于0,则将当前元素与之前子数组之和相加,相加之和作为当前子数组之和。如果其小于0 判断Max是否大于等于0如果Max大于等于0则将当前元素与之前子数组之和相加,相加之和作为当前子数组之和,跳过循环如果Max小于0当前子数组之和即为当前元素将当前子数组之和与最大值Max作比较如果其大于最大值,则更新
------------------------------------------------------------------------------------------
因为只遍历了一次数组,所以时间复杂度为O(n)
代码如下:
#include <iostream>using namespace std;int main(){ int n, s[10], sum, Max; cin >> n; for(int i = 0; i < n; ++i) cin >> s[i]; for(int i = 0; i < n; ++i) { if(i == 0) Max = sum = s[i]; //将sum和Max初始化为数组中的第一个元素的值。 else { if(s[i] >= 0) { if(sum <= 0) sum = s[i]; else sum = sum + s[i]; } else { if(Max >= 0) { sum = 0; continue; } else sum = s[i]; } if(sum > Max) Max = sum; } } cout << "max = " << Max << endl; return 0;}
0 0
- 编程之美2.14求子数组之和的最大值
- [编程之美2.14]求子数组之和的最大值
- 编程之美--求子数组之和的最大值
- 读书笔记之编程之美 - 2.14 求数组的子数组之和的最大值
- 编程之美之2.14 求数组的子数组之和的最大值
- 编程之美2.14 求数组的子数组之和的最大值
- 编程之美2.14——求数组的子数组之和的最大值
- 编程之美 2.14 求数组的子数组之和的最大值
- 编程之美2.14 求数组的子数组之和的最大值
- 编程之美 2.14 求数组的子数组之和的最大值
- [编程之美] 2.14 求数组的子数组之和的最大值
- 编程之美2.14 求数组的子数组之和的最大值
- 编程之美2.14 求数组的子数组之和的最大值
- 编程之美读书笔记2.14—求数组的子数组之和的最大值
- 《编程之美》- 2.14 - 求数组的子数组之和的最大值
- 编程之美2.14求数组的子数组之和的最大值Java版
- 编程之美2.14求数组的子数组之和的最大值Java版
- 编程之美-2.14 求数组的子数组之和的最大值
- 关系表设计原则【转】
- [走过的路]联想时光——告别“不靠谱”
- Memcached 高可用方案 Repcached
- 淘宝百度腾讯博弈,究竟谁胜谁负
- hadoop学习笔记(一)——hadoop运行源代码分析
- 编程之美 2.14 求数组的子数组之和的最大值
- 安卓TableLayout表格布局
- PyCharm中引用Python解释器出现的错误!
- poj 1088 DP
- oracle修改字段数据类型
- SQL注入的一些笔记(一)
- Hibernate主键生成策略
- Basic Level 1001. 害死人不偿命的(3n+1)猜想 (15)
- Oracle RANK函数