LeetCode - Best Time to Buy and Sell Stock III 题解
来源:互联网 发布:李逍遥到底爱谁知乎 编辑:程序博客网 时间:2024/06/07 03:29
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 two transactions.
Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
思路:
想O(N)的算法,
F[i]表示,在第i天卖出一次最大利润(1次)
G[i]表示,在第i天买入,后面某天卖出最大利润(1次)
结合F和G的结果即可
class Solution {public: int maxProfit(vector<int> &prices) { vector<int> &A = prices; int n = A.size(); if(n <= 1)return 0; vector<int> F(n, 0), G(n, 0), K(n, 0); F[0] = 0; for(int i = 1; i < n; ++i){ F[i] = max(0, max(F[i - 1] - A[i - 1] + A[i], A[i] - A[i - 1])); // cout << i << ':' << F[i] << endl; } //cout << endl; G[n - 1] = 0; for(int i = n - 2; i >= 0; --i){ G[i] = max(0, max(G[i + 1] + A[i + 1] - A[i], A[i + 1] - A[i])); //cout << i << ':' << G[i] << endl; } //cout << endl; K[n - 1] = G[n - 1]; for(int i = n - 2; i >= 0; --i){ K[i] = max(G[i], K[i + 1]); // cout << i << ':' << K[i] << endl; } int ans = max(K[0], F[n - 1]); for(int i = 0; i < n - 1; ++i){ ans = max(ans, F[i] + K[i + 1]); } return ans; }};
0 0
- LeetCode - 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 Best Time to Buy and Sell Stock III
- [Leetcode] Best Time to Buy and Sell Stock III
- leetcode 16: 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 62: 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 - 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: 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题目:Best Time to Buy and Sell Stock III
- 计算机编程
- QQ通信协议
- 有关myeclipse中引用的project没有在tomcat中编译的解决方法
- RSS FEED的应用
- VC6.0的若干实用小技巧
- LeetCode - Best Time to Buy and Sell Stock III 题解
- 微软之巨变与”国产化“魔咒
- 华三”保卫战”:内部员工详述集体抵制毛渝南的背后隐情
- Objective-C 指针理解
- pat1010. Radix (25) BUG!!!
- makefile基础和工作常用点补充
- 跳出一致性Hash算法 打造更高效的分布式缓存 .
- [leetcode] Excel Sheet Column Title
- 【DP】判断在矩阵A中是否存在一条路径与数组s相同