最大子数组 II
来源:互联网 发布:淘宝网保健品 编辑:程序博客网 时间:2024/05/21 09:10
给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大。
每个子数组的数字在数组中的位置应该是连续的。
返回最大的和。
注意事项
子数组最少包含一个数
样例
给出数组 [1, 3, -1, 2, -1, 2]
这两个子数组分别为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2],它们的最大和都是 7
挑战
要求时间复杂度为 O(n)
public class Solution { /** * @param nums: A list of integers * @return: An integer denotes the sum of max two non-overlapping subarrays */ public int maxTwoSubArrays(ArrayList<Integer> nums) { int max = 0; if (nums == null || nums.size() == 0) return max; int[] left = new int[nums.size()]; int[] right = new int[nums.size()]; int minsum = 0; int sum = 0; max = Integer.MIN_VALUE; for (int i = 0; i < nums.size(); i++) { sum += nums.get(i); max = Math.max(max, sum - minsum); minsum = Math.min(minsum, sum); left[i] = max; } sum = 0; minsum = 0; max = Integer.MIN_VALUE; for (int i = nums.size() - 1; i >= 0; i--) { sum += nums.get(i); max = Math.max(max, sum - minsum); minsum = Math.min(minsum, sum); right[i] = max; } max = Integer.MIN_VALUE; for (int i = 0; i < nums.size()-1; i++) { max = Math.max(max, left[i] + right[i+1]); } return max; }}
阅读全文
0 0
- 最大子数组 II
- 最大子数组II
- 最大子数组 II
- LintCode:最大子数组 II
- LintCode-最大子数组 II
- lintcode -- 最大子数组II
- lintcode(42)最大子数组 II
- lintcode 42 最大子数组 II 解析
- [Lintcode]Maximum Subarray II 最大子数组 II
- 42.Maximum Subarray II-最大子数组 II(中等题)
- 求最大子数组
- 求最大子数组
- 子数组和最大
- 求最大子数组
- 最大子数组
- 最大子数组和
- 最大子数组和
- 子数组最大和
- Neutron 默认安全组规则
- 一题多解——Strategic Game
- 51nod 1461 稳定桌
- 关于TRIM的优化技巧
- 【转载】String,StringBufffer之间的区别以及StringBuffer总结
- 最大子数组 II
- ActiveMQ的集群
- scikit-image/matplotlib处理图像知识点 2017 7.15
- js阻止form表单提交
- E
- 线程安全/可重入函数
- python 元类
- python2.6升级2.7
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path