給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。
每個子陣列的數字在陣列中的位置應該是連續的。
返回最大的和。
給出陣列[1, 3, -1, 2, -1, 2]
這兩個子陣列分別為[1, 3]
和[2, -1, 2]
或者[1, 3, -1, 2]
和[2]
,它們的最大和都是7
要求時間複雜度為 o(n)
子陣列最少包含乙個數
class solution:
"""@param: nums: a list of integers
"""def maxtwosubarrays(self, nums):
# write your code here
if len(nums) < 3:
return sum(nums)
n = len(nums)
#倒序排列
strnums = nums[::-1]
leftmax = [nums[0]]
rightmax = [strnums[0]]
newleftmax = nums[0]
newrightmax = strnums[0]
for i in range(1, n):
#對從左到右正序數字進行加和判斷
if newleftmax > 0:
newleftmax += nums[i]
else:
newleftmax = nums[i]
#對從右往左逆序數字進行加和判斷
if newrightmax > 0:
newrightmax += strnums[i]
else:
newrightmax = strnums[i]
maxbase = -float("inf")
for i in range(n - 1):
#左邊最大+右邊最大
new = leftmax[i] + rightmax[n - i - 2]
if maxbase < new:
maxbase = new
return maxbase
LintCode 42 最大子陣列 II
給定乙個整數陣列,找出兩個 不重疊子陣列使得它們的和最大。每個子陣列的數字在陣列中的位置應該是連續的。返回最大的和。public class solution else if tmp max leftarray i max int rightarray new int nums.size max i...
lintcode 42 最大子陣列 II 解析
題目 給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。每個子陣列的數字在陣列中的位置應該是連續的。返回最大的和。樣例給出陣列 1,3,1,2,1,2 這兩個子陣列分別為 1,3 和 2,1,2 或者 1,3,1,2 和 2 它們的最大和都是 7 思路 例 nums陣列 left ligh...
42 最大子陣列
原題 42.最大子陣列 ii 討論區 給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。每個子陣列的數字在陣列中的位置應該是連續的。返回最大的和。注意事項 子陣列最少包含乙個數 您在真實的面試中是否遇到過這個題?yes樣例給出陣列 1,3,1,2,1,2 這兩個子陣列分別為 1,3 和 2...