leetcode——123——Best Time to Buy and Sell Stock III
来源:互联网 发布:悠仁亲王 弱智 知乎 编辑:程序博客网 时间:2024/06/05 04:19
Say you have an array for which the ith element is the price of a given stock on dayi.
Design an algorithm to find the maximum profit. You may complete at most two transactions.
题意:用一个数组表示股票每天的价格,数组的第i个数表示股票在第i天的价格。最多交易两次,手上最多只能持有一支股票,求最大收益。
分析:动态规划法。以第i天为分界线,计算第i天之前进行一次交易的最大收益preProfit[i],和第i天之后进行一次交易的最大收益postProfit[i],最后遍历一遍,max{preProfit[i] + postProfit[i]} (0≤i≤n-1)就是最大收益。第i天之前和第i天之后进行一次的最大收益求法同Best Time to Buy and Sell Stock I。
class Solution {public: int maxProfit(vector<int>& prices) { if (prices.size() < 2) return 0; int n = prices.size(); vector<int> preProfit(n,0); vector<int> postProfit(n,0); int curMin = prices[0]; for (int i = 1; i < n; i++) { curMin = min(curMin, prices[i]); preProfit[i] = max(preProfit[i - 1], prices[i] - curMin); } int curMax = prices[n - 1]; for (int i = n - 2; i >= 0; i--) { curMax = max(curMax, prices[i]); postProfit[i] = max(postProfit[i + 1], curMax - prices[i]); } int maxProfit = 0; for (int i = 0; i < n; i++) { maxProfit = max(maxProfit, preProfit[i] + postProfit[i]); } return maxProfit; }};
0 0
- LeetCode123—Best Time to Buy and Sell Stock III
- leetcode——123——Best Time to Buy and Sell Stock III
- leetcode 123 —— Best Time to Buy and Sell Stock III
- LeetCode —— Best Time to Buy and Sell Stock III
- LeetCode——Best Time to Buy and Sell Stock III
- 【leetcode】Array——Best Time to Buy and Sell Stock I/II/III
- Leetcode —— Best Time to Buy and Sell Stock
- LeetCode——Best Time to Buy and Sell Stock
- LeetCode——Best Time to Buy and Sell Stock
- leetcode——Best Time to Buy and Sell Stock
- Best Time to Buy and Sell Stock——LeetCode
- leetcode——Best Time to Buy and Sell Stock
- LeetCode——Best Time to Buy and Sell Stock
- LeetCode—Best Time to Buy and Sell Stock
- LeetCode 123: Best Time to Buy and Sell Stock III
- LeetCode: Best Time to Buy and Sell Stock III [123]
- LeetCode 123 Best Time to Buy and Sell Stock III
- [leetcode 123] Best Time to Buy and Sell Stock III
- jsp 语法 (一)
- quick-cocos 3.3 整理(持续更新)
- Program3_L
- Slideout.js – 滑出式 Web App 导航菜单
- 通过崩溃trace来查找问题原因
- leetcode——123——Best Time to Buy and Sell Stock III
- 排序与算法
- Compile、Make和Build的区别
- android开发环境搭建
- 找出一个数组中的”单身“
- PHP中new出来的对象和 clone复制出来的对象
- C#中Split用法(把字符串以某个字符为分隔符分成一个数组)
- eclipse svn同步程序报错 Attempted to lock an already-locked dir(使用此方法已经解决问题)
- Codeforces Round #334 (Div. 2) D. Moodular Arithmetic