Leetcode 最大子序和

2021-09-28 07:51:18 字數 948 閱讀 5232

把陣列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...