給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。
輸入:[-2,1,-3,4,-1,2,1,-5,4]動態規劃思想輸出:6
解釋:連續子陣列 [4,-1,2,1] 的和最大,為 6
問題拆解
核心為連續子陣列,可以看成乙個區間,可以從起始點和終止點確定乙個子陣列,先確定終止點i,然後問題轉換成「以i結尾的所有子陣列中,和最大的是多少?」,然後進行拆解。
拆解分為兩種情況:
i這個位置的元素自己構成乙個子陣列;
i位置的元素的值+以i-1結尾的所有子陣列中子陣列和最大的值。
狀態定義
通過問題拆解得知,dp[i]就是以i結尾的所有子陣列的最大值。
遞推方程
dp[i] = math.max(dp[i - 1],0) + array[i]實現
題目要求子陣列最少包含乙個元素,則剛開始需要初始化,即dp[0] = array[0]
class
solution
int
dp =
newint
[nums.length]
; dp[0]
= nums[0]
; int result = dp[0]
;//記錄最後的答案
for
(int i =
1;i < nums.length;
++i)
return result;
}}
leetcode刷題打卡 53
給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6解釋 連續子陣列 4,1,2,1 的和最大,為 6。此題為簡單題。首先考慮何時連續子陣列的的和最大,當連續子陣列的第一位和最後一位是負數時,很顯然可...
LeetCode刷題日記 53 最大子序和
題目給出乙個整數陣列nums,要求在陣列中找到具有最大和的連續子陣列。這裡首先使用暴力求解法,如下 class solution return maxsum 這段 在遇到陣列 2,1 時,會返回0。這是以為對maxsum的初始值設定為0,當實際maxsum比0還小的時候,就會返回0。為了修改這個bu...
Leetcode刷題記錄 53 最大子序和
小菜鳥第一次接觸動態規劃,請多包涵 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。在這個問題中,我們將求解最大和連續子陣列分解為求解到當前...