描述
假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。
样例
假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。
样例
给出一个数组样例 [3,2,3,1,2], 返回 1
分析
对于该问题,我们可以使用枚举法、贪心算法。从最后开始计算,将max_prices与prices[i]之差与上一次的之差结果ans比较,将最大的保存到ans中。并且更新max_prices = max(max_prices, prices[i])
程序
class Solution {
public:
/**
* @param prices: Given an integer array
* @return: Maximum profit
*/
int maxProfit(vector<int> &prices) {
// write your code here
if(prices.empty()) return 0;
int ans = 0;
int max_prices = prices[prices.size() - 1];
int i = prices.size() - 1;
for(--i; i >= 0; --i){
ans = max(ans, max_prices - prices[i]);
max_prices = max(max_prices, prices[i]);
}
return ans;
}
};