『力扣每日一题15』:买卖股票的最佳时机

一、题目

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0

示例 1:

复制代码
输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

复制代码
输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

二、思路解析

我们要明确需求,就是先找到数组中的最小值跟最大值。

因此,我们可以定义两个变量,min 代表最小值,直接定义为一个 Integer 的最大值即可,保证每个数至少小于或等于它,就可以替换掉它。

而 maxprofit 的定义同理。

接着我们开始遍历数组,只要小于 min 的都赋值给 min、大于 mixprofit 的都赋值给它,并做好条件判断。

最终的最大利润 maxprofit 也就等于 最大值减去最小值,然后返回即可。

三、完整代码

复制代码
class Solution {
    public int maxProfit(int[] prices) {
        int min = Integer.MAX_VALUE;
        int maxprofit = 0;

        for(int i = 0;i<prices.length;i++){
            if(prices[i]<min){
                min = prices[i];
            }else if(prices[i]-min>maxprofit){
            maxprofit = prices[i]-min;
            }
        }
            return maxprofit;

    }
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

相关推荐
小吴先生6669 分钟前
Groovy 规则执行器,加载到缓存
java·开发语言·缓存·groovy
小竹子1411 分钟前
L1-1 天梯赛座位分配
数据结构·c++·算法
董董灿是个攻城狮20 分钟前
Transformer 通关秘籍8:词向量如何表示近义词?
算法
秋风&萧瑟25 分钟前
【QT】QT的多界面跳转以及界面之间传递参数
开发语言·qt
骑牛小道士28 分钟前
JAVA- 锁机制介绍 进程锁
java·开发语言
郭涤生31 分钟前
Chapter 1: Historical Context_《C++20Get the details》_notes
开发语言·c++20
独好紫罗兰42 分钟前
洛谷题单2-P5712 【深基3.例4】Apples-python-流程图重构
开发语言·python·算法
uhakadotcom1 小时前
NVIDIA Resiliency Extension(NVRx)简介:提高PyTorch训练的容错性
算法·面试·github
东方佑1 小时前
深度解析Python-PPTX库:逐层解析PPT内容与实战技巧
开发语言·python·powerpoint
水w1 小时前
【Android Studio】如何卸载干净(详细步骤)
android·开发语言·android studio·activity