面试题 31
2015-09-18 13:56
253 查看
1 题目描述
输入一个整数数组,数组里有证正数也有负数,数组中一个或连续的多个整数组成一个子数组,求所有数组的和的最大值。要求时间复杂度为O(n)2 算法描述
{1,-2,3,10,-4,7,2,-5} => {3,10,-4,7,2}
1+(-2)=(-1)
如果后面的元素加上 -1 的话,只会让总和减小,所以当总和小于等于零的时候,我们需要抛弃之前所求得的和,从下一个元开始重新计算
3+10-4=9,之前总和为 13 当我们加上 -4 之后总和减小 ,我们需要一个辅助变量来存储之前的最大总和。
3 实现代码 java
public class FindGreatestSumOfSubArray { public static void main(String[] args) { int[] arrays=new int[]{-1,-3,6,-5,-5}; int result=findGreatestSumOfSubArray(arrays); System.out.println(result); System.out.print(Integer.toBinaryString(-2147483648)); } private static int findGreatestSumOfSubArray(int[] arrays) { int sum=0; int max=0x80000000; for(int i=0;i<arrays.length;i++){ if(sum<=0){ sum=arrays[i]; }else{ sum=sum+arrays[i]; } if(sum>max){ max=sum; } } return max; } }
相关文章推荐
- 一道面试题Lintcode196-Find the Missing Number
- 面试题总结-new 和malloc 区别
- 谈女程序员的问题
- 谈一谈我所理解的面试
- 30多年程序员生涯经验总结
- 黑马程序员-Java基础学习第六天总结
- 黑马程序员-Java基础学习第五天总结
- 12款令程序员惊叹的CSS3效果库
- 关于内存面试题引发的思考
- 海格面试题总结
- 黑马程序员__java面向对象__构造函数和继承
- Android面试准备:内存泄露和内存溢出
- 面试官有问题?我看是你有问题吧!
- 黑马程序员——ios开发基础之OC简介
- 面试题 30
- 程序员必须知道的10大基础实用算法及其讲解
- 黑马程序员-Java基础学习第三天总结
- 13 种激励程序员的方法
- 面试题 29
- 通过六个题目彻底掌握String笔试面试题