求子数组的最大和
来源:互联网 发布:小微企业会计核算软件 编辑:程序博客网 时间:2024/06/06 04:06
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
注意由于有时间复杂度的要求,那么在整个算法中只能涉及一次循环操作。
当时笔试的时候总共花了20分钟来完成了该算法,如果该算法有问题请给我留言。
//【 刘涛个人算法,欢迎挑刺。】
int GetMaxValue(int *data, int size)
{
int i = 0;
int max=0; //保存一次搜索中的最大值
int add=0; //保存着每一次的叠加值
if(data==NULL)
{
return 0;
}
max=data[0];
for(i=0;i<size;i++)
{
add += data[i]; //叠加当前的值后的结果
if(add > data[i]) //[说明这次的叠加后的值大于当前的值]
{
if(add >= max) //[有可能存在3,2,1,-2,1情况]
{
max = add;
}
}
else //[说明这次叠加后的值还没当前的值大]
{
add = data[i];
}
}
return max;
}
//【 刘涛个人测试,欢迎挑刺】
int main(void)
{
int a[] = {1,-2,3,10,-4,7,2,-5}; //18
int b[] = {-1,-2,-3,-10,-4,-7,-2,-5}; //-1
int c[] = {-10,5,-3,4,1,-2,-1}; //7
GetMaxValue(a,sizeof(a)/sizeof(int));
GetMaxValue(b,sizeof(b)/sizeof(int));
GetMaxValue(c,sizeof(c)/sizeof(int));
}
- 求数组最大子数组的和
- 求子数组的最大和
- 面试---求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- 2.求子数组的最大和
- 3.求子数组的最大和
- 求子数组的最大和
- 3、求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- 求子数组的最大和
- SpringMVC要点总结
- 设计模式---六大原则
- 黑马程序员-Java学习01-基础语法
- 计蒜客017-X的平方根
- 百度2013校园招聘笔试题(含自己整理的答案)
- 求子数组的最大和
- 关于投影平面变换到viewport后多边形的失真问题
- nyoj 题目4:ASCII码排序
- 使用Busybox制作根文件系统
- Convolution Neural Network (CNN) 原理与实现
- 超越自我 勇往直前
- 差分约束系统——POJ 2983
- 使用Qemu模拟Cortex-A9运行U-boot和Linux
- 别让自己受hater的影响,坚持自己的思想!