[数组]面试题9 最大连续子串
2016-01-28 10:16
302 查看
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?
这个题就是编程珠玑中的求最大的连续子串
最简单的算法是
sum[i] = max(sum[i-1]+a[i],a[i])
如果sum[i-1]<0
sum = a[i];
否则
sum+=a[i];
这个题就是编程珠玑中的求最大的连续子串
最简单的算法是
sum[i] = max(sum[i-1]+a[i],a[i])
如果sum[i-1]<0
sum = a[i];
否则
sum+=a[i];
public int FindGreatestSumOfSubArray(int[] array) { //sum[i]=max(sum[i-1]+a[i],a[i]) //sum[i-1]<0 则重置起始点a[i] //考虑到有可能都是负数的情况 if(array.length==0){ return 0; } int sum = 0; int max = Integer.MIN_VALUE; for(int i=0;i<array.length;i++){ if(sum<0){ sum = array[i]; }else{ sum+=array[i]; } if(sum>max) max = sum; } return max; }
相关文章推荐
- 小小白初入编程江湖之初入职场迷茫篇
- 北京程序员 VS 硅谷程序员(转)
- 在程序员的眼里,用户是这样使用他们开发的软件的
- 据说,年薪百万的程序员,都是这么开悟的
- 程序员眼中的英文单词是这样的…
- 码农十年连载四
- 黑马程序员 NSRange的基础知识总结及应用
- java基础面试题
- 面试时,你会问面试官哪些问题?
- 【黑马程序员】第十一章:正则表达式
- 程序员从教女友写代码中学到的
- LeetCode题解--1. Two Sum(和为S的两个数字)
- JAVA 面试题复习
- 黑马程序员 NSDictionary的介绍及基础用法
- 黑马程序员- 动态代理 ,接口 ,抽象类
- 面试题—链表操作
- 程序员之路(觉悟之路)
- 《程序员的自我修养》读书笔记
- 转:如何面试一个测试工程师
- [每天一个知识点]34-职业生涯-用得着和用不着的知识