把陣列nums
以中間位置(mid
)分為左(left
)右(right
)兩部分. 那麼有,left = nums[0]...nums[mid - 1]
和right = nums[mid + 1]...nums[len-1]
最大子串行和的位置有以下三種情況:
考慮中間元素nums[mid]
, 跨越左右兩部分,這裡從中間元素開始,往左求出字尾最大,往右求出字首最大, 保持連續性。
不考慮中間元素,最大子串行和出現在左半部分,遞迴求解左邊部分最大子串行和
不考慮中間元素,最大子串行和出現在右半部分,遞迴求解右邊部分最大子串行和
分別求出三種情況下最大子串行和,三者中最大值即為最大子串行和。
**如下:
class solution
int maxcrossingsum(vector& nums, int left, int mid, int right)
sum = 0;
int rightsum = -2147483648;
for(int i = mid+1;i <= right;i++)
return leftsum + rightsum;
}int maxsubarraysum(vector& nums, int left, int right)
};
先計算出以i個數字結束的最大子串行和,然後找到最大的子串行和。
以第i個數字結束的最大子串行和計算方式:dp[i] = max(dp[i - 1] + nums[i], nums[i])
**如下:
class solution
return maxsum;
}};
leetcode最大子序和
給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。在本題中,我想到的兩...
Leetcode 最大子序和
題目描述 給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。解題思路 ...
LeetCode 最大子序和
給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。input 2,1 3,4,1 2,1 5,4 output 6動態規劃 python class solution def maxsubarray self,nums int tmp nums 0 ma...