# #42 Maximum Subarray II

Given an array of integers, find two non-overlapping subarrays which have the largest sum.
The number in each subarray should be contiguous.
Return the largest sum.

##### Notice

The subarray should contain at least one number

Example

For given [1, 3, -1, 2, -1, 2], the two subarrays are [1, 3]and [2, -1, 2] or [1, 3, -1, 2] and [2], they both have the largest sum 7.

Challenge

Can you do it in time complexity O(n) ?

Mycode（AC = 33ms）：

class Solution {
public:
/**
* @param nums: A list of integers
* @return: An integer denotes the sum of max two non-overlapping subarrays
*/
int maxTwoSubArrays(vector<int> nums) {
if (nums.size() <= 1) return 0;

vector<int> left_max(nums), right_max(nums);

// get max for subarray indexed 0...i
int local = nums[0];
for (int i = 1; i < nums.size(); i++) {
local = max(local + nums[i], nums[i]);
left_max[i] = max(left_max[i - 1], local);
}

// get max for subarray indexed i...nums.size() - 1
local = nums[nums.size() - 1];
for (int i = nums.size() - 2; i >= 0; i--) {
local = max(local + nums[i], nums[i]);
right_max[i] = max(right_max[i + 1], local);
}

// get final result
int global = INT_MIN;
for (int i = 1; i < nums.size(); i++) {
global = max(global, left_max[i - 1] + right_max[i]);
}
return global;
}
};


• 本文已收录于以下专栏：

## Lintcode - Maximum Subarray II

Given an array of integers, find two non-overlapping subarrays which have the largest sum. The numb...
• nicaishibiantai
• 2015年02月08日 15:12
• 3410

## Leetcode 644. Maximum Average Subarray II 最大平均区间2 解题报告

• MebiuW
• 2017年07月27日 22:41
• 2181

## leedcode做题总结, 题目Maximum Subarray II & Maximum Subarray Difference

• 2015年08月28日 05:02
• 345

## 644. Maximum Average Subarray II

• zjucor
• 2017年07月16日 12:00
• 795

## Lintcode 617：Maximum Average Subarray

• qq_34153219
• 2017年02月21日 20:27
• 2664

## Lintcode42 Maximum Subarray II solution 题解

【题目描述】 Given an array of integers, find two non-overlapping subarrays which have the largest su...
• xuxu_ban
• 2017年05月05日 16:19
• 213

## Maximum Subarray -- LeetCode

• linhuanmars
• 2014年03月20日 09:24
• 22504

## [C++]LeetCode: 58 Maximum Subarray

• cinderella_niu
• 2014年12月28日 12:05
• 1017

## 53. Maximum Subarray-动态规划/分治

• u011567017
• 2016年09月04日 17:30
• 265

## LeetCode53. Maximum Subarray 动态规划和分治法

• wmdshhz0404
• 2016年09月20日 23:26
• 385

举报原因： 您举报文章：#42 Maximum Subarray II 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)