Best Time to Buy and Sell Stock(from leecode
题意:
Say you have an array for which the ith element is the price of a given stock on day i.
If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.
Example 1:
Input: [7, 1, 5, 3, 6, 4] Output: 5 max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)
Example 2:
Input: [7, 6, 4, 3, 1] Output: 0 In this case, no transaction is done, i.e. max profit = 0.
分析:
在某一刻买入,在之后的某个时候卖出。这道题的解法我用的是类似贪心算法,在某刻买入的时候,我查看下一刻的价格是否更低,如果更低,我就买入下一刻的东西。如果更高,我就尝试卖出,看看价格是不是比上次的最大高,
代码:
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.empty()){
return 0;
}
int buy = prices[0];
int sell = 0;
for(int i=0;i<prices.size();i++){
if(prices[i]<buy){
buy = prices[i];
}
if(prices[i]>buy){
sell = max(sell,prices[i]-buy);
}
}
return sell;
}
};