lintcode練習 42 最大子陣列 II

2021-08-27 02:58:23 字數 1157 閱讀 7770

給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。

每個子陣列的數字在陣列中的位置應該是連續的。

返回最大的和。

給出陣列[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...