1 题目
/**
* 你现在是一个买卖青蛙的 huster。
* 每天的青蛙价格不一样,prices[i]代表青蛙在第 i 天的价 格
* 求只做一次交易(买入 1 只,卖出 1 只)能得到的最大收益(你必须先买了青蛙之后才能 卖青蛙)。
* 时间复杂度要求:O(n)
*/
2 题解
2.1 解题思路
考查的是买卖的最佳时机,必须先买之后才能卖出。
从最佳利益的角度出发,只需要找到一个买入最低点和卖出最高点的差价即可。
主要变量是当前最小值minPrice以及当前最大利益maxProfit。遍历price数组,更新两个变量的值,即可找到最终的maxProfit。
(可以和股票的最佳买卖时机作对比)
2.2 过程演示
2.3.1 demo1
2.2.2 demo2
2.3 结果展示
2.4 结果分析
时间复杂度:O(n),空间复杂度:O(1)
2.5 代码
int getMaxProfit(int price[],int len){
int min = price[0];
int profit = 0;
for (int i = 1; i < len; ++i) {
if(price[i] - min > profit) profit = price[i] - min;
if(price[i] < min) min = price[i];
}
return profit;
}