問題の説明
NUMSに整数の配列を与えられ、その最大値とリターンを有する連続サブアレイ(最小要素を含むサブアレイ)の最大値を見つけます。
例:
入力:[-2,1、-3,4、-1,2,1、-5,4]、
出力:6
説明:連続サブアレイ[4、-1,2,1]、最大、 6。
出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/maximum-subarray
ダイナミック企画のアイデア
あなたはお金や失うお金に勝つことを配列ここ数日、あなたはギャンブラー選択的忘却していると仮定し、
あなたは、勝ち負けの過去数日間を表現するために合計を使用し
、ほとんどのお金を勝つためにあなたの手を格納するためのANSに
あなたの手はまだ(合計昨日お金を失っている場合は<0)、あなたは明日ギャンブル続けるために、それを忘れて、
あなたの手で(合計勝利した場合>; 0)を、あなたがギャンブルを続けて、覚えて
、あなたは何回あなたの最高の幸運を覚えています
完全なコード
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int len = nums.size();
if(len==0) return 0;
// dp[i]表示以i结尾的时候最大的字段和
int dp[len];
int mm;
dp[0] = nums[0];
mm = nums[0];
for(int i=1;i<len;i++){
dp[i] = max(dp[i-1]+nums[i],nums[i]);
if(dp[i] > mm) mm = dp[i];
}
return mm;
}
};
説明リンク
著者:acnesuの
リンクします。https://leetcode-cn.com/problems/maximum-subarray/solution/jia-she-ni-shi-yi-ge-du-tu-by-acnesu/
出典:滞在ボタン(LeetCode)
著作権は著者が保有しました。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。