1 题目描述
假设你有一个数组,其中第 i 个元素是股票在第 i 天的价格。你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。
2 解题思路
仅利用单次遍历便实现题目要求,非常巧妙,见代码。
3 代码实现
class Solution {
public:
/**
*
* @param prices int整型vector
* @return int整型
*/
int maxProfit(vector<int>& prices) {
// write code here
if(prices.empty()) return 0;
int maxProfitVal = 0;
int minPrice = prices[0];
for(int i = 0; i < prices.size(); i++){
minPrice = min(minPrice, prices[i]);
maxProfitVal = max(maxProfitVal, prices[i] - minPrice);
}
return maxProfitVal;
}
};
4 运行结果
运行时间:3ms
占用内存:376k