You are given an array prices where prices[i] is the price of a given stock on the ith day.
You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.
Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.
状态转移方程
dp[i] = min(dp[i-1], prices[i])
边界条件
dp[0] = prices[0]
代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
int len = prices.size();
int dp[100005] = {0};
dp[0] = prices[0];
int maxn = 0;
for(int i = 1; i < len; i++)
{
dp[i] = min(dp[i-1], prices[i]);
if(prices[i] -dp[i-1] > maxn)
maxn = prices[i] -dp[i-1];
}
return maxn;
}
};