题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?例如,一只股票在某些时间节点的价格为 {9, 11, 8, 5, 7, 12, 16, 14}。如果我们能在价格为 5 的时候买入并在价格为16 时卖出,则能收获最大的利润 11。
练习地址
https://leetcode-cn.com/problems/gu-piao-de-zui-da-li-run-lcof/
参考答案
class Solution {
public int maxProfit(int[] prices) {
if (prices.length < 2) {
return 0;
}
int maxProfit = 0, min = prices[0];
for (int i = 1; i < prices.length; i++) {
if (prices[i] - min > maxProfit) {
maxProfit = prices[i] - min;
} else if (prices[i] < min) {
min = prices[i];
}
}
return maxProfit;
}
}
复杂度分析
- 时间复杂度:O(n)。
- 空间复杂度:O(1)。