Leetcode 121. 买卖股票的最佳时机

104 阅读1分钟

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

一、题目描述

  • 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

二、思路分析

  • 最佳时机,也就是当前价格减去最小的那个价格

  • 所以遍历数组的时候找到遍历过程中最小的那个

三、AC 代码:

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的第121题,是热题100里的题,去年我刷了热题100用时一个月左右,接下来我会继续更新,小伙伴可以点赞关注,如果你也在刷热题100的话,希望可以对你有一些启发!