链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/description/
Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete at most k transactions.
【leetcode|[leetcode]188. Best Time to Buy and Sell Stock IV】Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
Example 1:
Input: [2,4,1], k = 2 Output: 2 Explanation: Buy on day 1 (price = 2) and sell on day 2 (price = 4), profit = 4-2 = 2.
Example 2:
Input: [3,2,6,5,0,3], k = 2 Output: 7 Explanation: Buy on day 2 (price = 2) and sell on day 3 (price = 6), profit = 6-2 = 4. Then buy on day 5 (price = 0) and sell on day 6 (price = 3), profit = 3-0 = 3.
文章图片
文章图片
class Solution {
public:
int maxProfit(int k, vector& prices) {
int size=prices.size();
if(k==0 || size==0) return 0;
if(k>(size/2) && size>=2)
k=size/2;
vector hold(k,INT32_MIN);
vector sold(k,0);
for(int price : prices) {
for(int j=0;
jhold, sold->hold
sold[j] = max(sold[j], hold[j]+price);
// sold->sold, hold->sold
}
}
return sold[k-1];
}
};
推荐阅读
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- #|算法设计与分析(Java实现)—— 动态规划 (0-1 背包问题)
- 动态规划|暴力递归经典问题
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- 【LeetCode】28.实现strstr() (KMP超详细讲解,sunday解法等五种方法,java实现)
- LeetCode-35-搜索插入位置-C语言
- leetcode python28.实现strStr()35. 搜索插入位置
- Leetcode Permutation I & II