121. 买卖股票的最佳时机

思路:可以找出数组里每一个元素右侧的最大值,再遍历整个数组,找当前元素右侧最大值和当前元素数值的差,最大的就是要求的结果。
class Solution {
public int maxProfit(int[] prices) {
int[] rightMax=new int[prices.length];
for(int i=prices.length-2;i>=0;i--)
{
rightMax[i]=Math.max(rightMax[i+1],prices[i+1]);
}
int max=0;
for(int i=0;i<prices.length;i++)
{
if(rightMax[i]-prices[i]>max)
{
max=rightMax[i]-prices[i];
}
}
return max;
}
}
思路2:

public class Solution {
public int maxProfit(int prices[]) {
int minprice = Integer.MAX_VALUE;//目前最低价格
int maxprofit = 0;
for (int i = 0; i < prices.length; i++) {
if (prices[i] < minprice)//如果今天的价格比最低的还要低,更新最低价格
minprice = prices[i];
else if (prices[i] - minprice > maxprofit)//计算当前差值,如果比当前的最大差值还要大,就更新当前最大差值
maxprofit = prices[i] - minprice;
}
return maxprofit;
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/121-mai-mai-gu-piao-de-zui-jia-shi-ji-by-leetcode-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

浙公网安备 33010602011771号