LeetCode刷題集 53 最大子序和問題

2021-10-05 20:05:00 字數 918 閱讀 5235

給定乙個整數陣列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。在這個問題中,我們將求解最大和連續子陣列分解為求解到當前...