对于一个有正有负的整数数组,请找出总和最大的连续数列
来源:互联网 发布:淘宝网屏风富贵牡丹 编辑:程序博客网 时间:2024/06/07 00:15
给定一个int数组A和数组大小n,请返回最大的连续数列的和.。
对于任意一个数组A,最大连续数列的和可能为负数,0,正数。
对于数组[-1,2,3,8,9,-23,60]来说,我们首先进行累加,假设sum=0,则第一个数加上去sum = -1;,由于为负数,那么当加第二个数的时候,肯定会比第二个数小。那么我们可以舍弃第一个数,从第二个数开始累加,(但是这里要注意,有可能第一个sum=-1为最大的连续数列的和,因此我们需要保存下来,方便以后进行比较,max=-1)。
sum=2;那么sum>max,因此标记max=sum=2;
再继续累加第三个数
sum=2+3=5,
...
累加到第5个数时
sum=2+3+8+9=22;
max=22;
累加到第6个数时
sum=22-23=-1;
max=22;
此时和为-1,则加第七个数的时候,肯定会比第六个数小,因此我们开始从第七个数开始累加,由于之前累加的max=22,因此最后面累加的过程中,我们需要判断和是否大于max,如果大于,则更新max。
sum=60;max=60
这类似于贪心算法,即每一步都选择出局部最优解,从而得到整体最优解。
int getMaxSum(vector<int> A, int n) { // write code here int sum = 0; int max = -(1 << 30); for (int i = 0; i < A.size(); ++i) { sum += A[i]; if (sum > max) max = sum; if (sum < 0) sum = 0; } return max; }
0 0
- 对于一个有正有负的整数数组,请找出总和最大的连续数列
- 程序员面试金典——解题总结: 9.17中等难题 17.8给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和
- 给定一个正整数和负整数组成的N*N矩阵,编写代码找出元素总和最大的子矩阵。
- 给一个数组,找出数组中最长的连续数列的长度
- 找出连续子数组的最大和
- 在一个数列中找出最大和的连续子列
- 在一个数组中找出和最大的一个连续的子数组串
- 一个无序整数数组,数组元素大于5个,请用一种高效的算法找出其中最大的5个值.
- 给定一个数组,找出这个和最大的连续子数组的和
- 给一个整数数组,有正有负。找出数组最大和,条件是使用的元素不能有相邻
- 一个整数数组(正负,0),找出这个数组的最大子序列
- 有n个连续的整数,这些正数有正有负. 请取出这段整数的一个子段,其和为所有字段中最大.
- 求一个整数数组的连续子数组的最大和.
- 一个数组中找出连续子向量的最大和 分治算法 扫描算法O(n)
- 【牛客】连续子数组的总和
- 有一个数组,由正整数、负整数、零组成,求和最大的连续子数组
- 求一个数列的平均值和总和
- 一个包含正整数和负整数的数组,找出和最大的子串.
- 汇编初探
- Android进阶之路 - Fragment(碎片化)、进栈、不进栈的简单使用(一)
- 百练 2774 木材加工 二分
- Linux命令(2)——od命令
- LibreOffice的卸载与WPS的安装
- 对于一个有正有负的整数数组,请找出总和最大的连续数列
- Integer中一些知识点
- QML 锚布局 和 DPI 在Android上的使用例子
- 树梅派应用40:树莓派 Windows10 IoT Core 开发教程
- U3D的OnMouseEnter()方法与OnMouseExit()方法
- 查找问题方式总结
- 用R画直方图
- LeetCode: Matchsticks to Square
- 文章标题