子数组求最大和
来源:互联网 发布:linux服务器绑定域名 编辑:程序博客网 时间:2024/06/08 18:52
输入一个整形数组,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)
输入样例
1 -3 5 5 -6 -2 -7
输出
10
注意题目中说的是“连续”子数组,所以想着把负数提出来,剩下的正数相加的方法不行
这道题目可以使用动态规划来做:
(main函数省略)
int MaxSubArray(int A[], int n) { int result; //子数组相加的和。 int temp; //子数组从起点的元素开始相加的和。 result = temp = A[0]; //从第一个元素开始。 for(int i = 1; i < n; i++) { //遍历数组 //每次比较当前位置元素值,和从起点元素的值一直加过来的和,选择大者赋值给新的temp。 temp = max(temp + A[i], A[i]); //比较目前子数组的和temp与目前的result,选择大者赋值给result。 result = max(temp, result); } //返回最后结果。 return result; }
0 0
- 求子数组最大和
- 求子数组最大和
- 求子数组最大和
- 求最大子数组和
- 求子数组最大和
- 求子数组最大和
- 求子数组最大和
- 求子数组最大和
- 求最大子数组和
- 子数组求最大和
- 求子数组最大和
- 求最大子数组和
- 求数组最大子数组的和
- 求子数组的最大和
- 求数组最大连续子序列和
- 面试---求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- Perfect Number
- 减治法之插入排序
- woj-Divide by Six
- 用java代码对ACID的实现
- Rancher体系下容器日志采集
- 子数组求最大和
- Linux 下FTP定时执行批量下载文件
- 图解SQL的Join
- shell脚本中单引号和双引号的区别
- Opencv3编程入门学习笔记(三)之访问图像像素的三种方法
- 进制转换
- 关于boa+cgi上传文件大小的问题
- JavaScript border与offsetWidth
- 九度OJ题目1107:搬水果