動態規劃之子序列問題
動態規劃之子序列問題
1 最大子序和
方法一:動態規劃。
- 狀態dp[i] :表示序列[0… i] 的最大子序和
- 初始值:
i == 0
:dp[i] = arr[i] - 狀態轉移:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxSum = INT_MIN;
int sum = 0;
vector<int> dp (nums.size(), 0);
dp[0] = nums[0];
for (int i = 1; i < nums.size(); i++){
dp[i] = max(dp[i-1] + nums[i], dp[i]);
if (dp[i] > maxSum) maxSum = dp[i];
}
return maxSum;
}
};
解法二:動態規劃。使用兩個變數來維護最大子序和。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxSum = INT_MIN;
int sum = 0;
for (auto num : nums){
sum = sum < 0 ? num : sum + num;
maxSum = max(sum, maxSum);
}
return maxSum;
}
};
2 乘積最大的子序列
解題思路:動態規劃。乘積最大,只需考慮陣列中的所有數的符號。當序列大於0,則一直累乘,當序列小於0時,則累乘至最小值。維護兩個變數,儲存最大最小值,遍歷陣列,當前數小於0,則交換最大最小值。
class Solution {
public:
int maxProduct(vector<int>& nums) {
int ans = INT_MIN;
int imax = 1;
int imin = 1;
for (auto num : nums){
if (num < 0) swap(imax, imin);
imax = max(imax * num, num);
imin = min(imin * num, num);
ans = max(ans, imax);
}
return ans;
}
};
買賣股票的最佳時機
class Solution {
public:
int maxProfit(vector<int>& prices) {
if (prices.size() == 0){
return 0;
}
int start = 0, end = 0;
int ans = INT_MIN;
int profit = 0;
for (int i = 0; i < prices.size(); i++){
end = i;
profit = prices[end] - prices[begin];
if (profit < 0) begin = i;
ans = max(ans, profit);
}
return ans;
}
};
相關文章
- 動態規劃求解最長上升子序列問題動態規劃
- 最長公共子序列問題—動態規劃sdut動態規劃
- 動態規劃經典問題----最長公共子序列動態規劃
- 雙序列動態規劃動態規劃
- [LeetCode解題] -- 動態規劃二 [ 子串、子序列問題 ]LeetCode動態規劃
- 揹包問題----動態規劃動態規劃
- 【動態規劃】揹包問題動態規劃
- 整數劃分問題(動態規劃)動態規劃
- 動態規劃 01揹包問題動態規劃
- 找零問題與動態規劃動態規劃
- 【動態規劃】01揹包問題動態規劃
- 動態規劃-01揹包問題動態規劃
- 動態規劃,股票問題留坑動態規劃
- 動態規劃篇——揹包問題動態規劃
- 醜數問題——動態規劃、Java動態規劃Java
- (動態規劃)最小分糖果問題動態規劃
- 動態規劃--01揹包問題動態規劃
- 動態規劃9:變態跳臺問題動態規劃
- 以最長公共子序列問題理解動態規劃演算法(DP)動態規劃演算法
- “最長公共字串子序列”問題的動態規劃法演算法字串動態規劃演算法
- 動態規劃:最長上升子序列動態規劃
- 最長上升子序列動態規劃動態規劃
- 動態規劃求最長降序序列動態規劃
- 動態規劃-最長公共子序列動態規劃
- 動態規劃——最長公共子序列動態規劃
- 【動態規劃】01揹包問題【續】動態規劃
- 動態規劃5:找零錢問題動態規劃
- 好題——動態規劃動態規劃
- 動態規劃專題動態規劃
- 動態規劃題單動態規劃
- 淺談最長公共子序列引發的經典動態規劃問題動態規劃
- 動態規劃之最長公共子序列求解動態規劃
- 動態規劃-最長上升子序列模型動態規劃模型
- 動態規劃(最長公共子序列LCS)動態規劃
- 動態規劃之股票問題123動態規劃
- 0-1揹包問題(動態規劃)動態規劃
- 動態規劃,這幾個問題最常見!動態規劃
- 動態規劃-最少硬幣組合問題動態規劃