经典笔试面试题-数组中最大的子数组之和
2016-09-24 18:00
260 查看
用java语言实现一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值,要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,那么最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18
测试用例:
1,-2,3,5,-3,-2 输出结果:8
0,-2,3,5,-1,2 输出结果:9
-9,-2,-3,-5,-3,-8 输出结果:-2
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值,要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,那么最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18
package HuaWei; public class Main2 { public static void main(String[] args) { // TODO 自动生成的方法存根 int[] a = { 1, -2, 3, 10, -4, 7, 2, -5 }; int max = MaxSum(a); System.out.println(max); } public static int MaxSum(int[] a) { int out = 0; int temp = 0; for (int i = 0; i < a.length; i++) { temp = temp + a[i]; if (temp > out) out = temp; if (temp < 0) temp= 0; } return out; } }
测试用例:
1,-2,3,5,-3,-2 输出结果:8
0,-2,3,5,-1,2 输出结果:9
-9,-2,-3,-5,-3,-8 输出结果:-2
相关文章推荐
- [经典面试题][淘宝]求首尾相连数组的最大子数组和
- 笔试面试算法经典--连续子数组的最大乘积及连续子数组的最大和(Java)
- 经典面试题之求连续子数组最大和
- 笔试面试算法经典-打印n个数组中最大的topk
- 经典面试题 之 子数组之和最大值
- 【IT笔试面试题整理】连续子数组的最大和
- 经典面试题:求数组的最大子序列和;实现函数 :判断一个自负喜欢是否是另一个字符串旋转所得;杨氏矩阵中查找一个数。
- 【面试题经典重温【原创】】求子数组的最大和
- [经典面试题]子数组的最大乘积
- 经典笔试面试题——杂题(各种各样的小问题)
- 【Killua笔试面试题整理】两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值
- 面试题——C/C++经典问题,及面试笔试题
- 另解,c/c++有趣的经典笔试题:不用判断语句求得两个整数的最大值
- 面试题31:连续子数组的最大和
- 程序员面试题精选100题(03)-求子数组的最大和
- 微软面试题系列(三):求子数组的最大和
- 面试题2:求子数组的最大和
- 一道经典的面试题:如何从N个数中选出最大(小)的n个数?
- 一道经典的面试题:如何从N个数中选出最大(小)的n个数?
- 一道经典的面试题:如何从N个数中选出最大(小)的n个数?