121. 买卖股票的最佳时机
题目
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
注意:你不能在买入股票前卖出股票。
解题思路
题目要求只能一次买卖。
那么我们只需要不断的更新最小值,并且每次循环都用当前值减去最小值,获取到差值,再取最大的差值即最大利润
代码
class Solution {
public int maxProfit(int[] prices) {
if (prices.length==0){
return 0;
}
int min =prices[0];
int result=0;//将要返回的结果
for (int i=1;i<prices.length;i++){//i从1开始,因为0已经被定为目前的最小值了。
if (prices[i]<min){
min=prices[i];
}
int tmp=prices[i]-min;//用当前值减去最小值,得到差值(如果当前值就是最小值那么差值为0)
if (tmp>result){
result=tmp;
}
}
return result;
}
}