子题数组的最大累加和问题
2018-03-24 15:17
204 查看
算法常用技巧
子数组的最大累加和问题
题目
bilibili讲解传送门https://www.bilibili.com/video/av21178974/
给定一个数组arr,返回子数组的最大累加和。
例如,arr=[1,-2,3,5,-2,6,-1],所有的子数组中,[3,5,-2,6] 可以累加出最大的和12,所以返回12。
【要求】
如果arr长度为N,要求时间复杂度为O(N),额外空间复杂度为
O(1)。
public class SubArrayMaxSum { public static int maxSum(int[] arr) { if (arr == null || arr.length == 0) { return 0; } int max = Integer.MIN_VALUE; int cur = 0; for (int i = 0; i != arr.length; i++) { cur += arr[i]; max = Math.max(max, cur); cur = cur < 0 ? 0 : cur; } return max; } public static void printArray(int[] arr) { for (int i = 0; i != arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } public static void main(String[] args) { int[] arr1 = { -2, -3, -5, 40, -10, -10, 100, 1 }; System.out.println(maxSum(arr1)); int[] arr2 = { -2, -3, -5, 0, 1, 2, -1 }; System.out.println(maxSum(arr2)); int[] arr3 = { -2, -3, -5, -1 }; System.out.println(maxSum(arr3)); } }
相关文章推荐
- 子数组的最大累加和问题
- 子数组的最大累加和问题
- JAVA代码—算法基础:子数组的最大累加和问题
- java算法7~求子数组的最大累加和问题
- 子数组的最大累加和问题
- 数组与矩阵---子矩阵的最大累加和问题
- 子数组的最大累加和问题
- 数组与矩阵问题---子数组的最大累加和问题
- 【算法】子数组的最大累加和/子矩阵的最大累加和问题
- 最大子数组问题
- 子数组的最大累加和
- 最大子数组问题 | DP
- 连续子数组最大和问题(能够处理全是负数,返回子数组的起止索引的O(N)算法)
- 动手才会属于自己--求最大子数组问题拓展
- 生成窗口最大数组问题
- 算法导论之分治策略:最大子数组问题
- 二维数组最大子数组的和 结对开发 溢出问题
- DivideAndConquer-最大子数组问题
- 求数组连续最大和问题
- 第4章 最大子数组问题