Leetcode - 买卖股票的最佳时机 E[121]

news/2024/8/26 18:53:10

问题描述

给定一个数组 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。
提示:
     1 <= prices.length <= 105
     0 <= prices[i] <= 104

采用 动态规划 的思想 ,用一个变量 pre 来存储买进股票的时间,ans 来存储最大的利润,之后存在两种情况:

        1. 第二天的股票价格 >= 今天

        2. 第二天的股票价格 <= 今天

第一种情况我们重新计算 ans 的值,第二种情况我们改变买进股票的时间,这样通过一次循环我们就可以的到买卖股票的最大利润

代码

    public int maxProfit(int[] prices) {
        int ans = 0;
        int len = prices.length;
        int pre = prices[0];
        for(int i = 1;i < len;i++){
            if(prices[i] > pre){
                ans = prices[i] - pre > ans ? prices[i] - pre : ans;
                continue;
            }
            pre = prices[i];
        }
        return ans;
    }

执行结果

info
            解答成功:
            执行耗时:1 ms,击败了100.00% 的Java用户
            内存消耗:51.1 MB,击败了87.34% 的Java用户


http://www.niftyadmin.cn/n/4557792.html

相关文章

谁能给我介绍一点关于C语言的问题

如果你想找C语言本身的缺陷 找本C语言的脚本 你可以看看这本书《C缺陷与陷阱》 里面有很多题目

Leetcode - 寻找两个正序数组的中位数 H[4]

问题描述 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1&#xff1a;输入&#xff1a;nums1 [1,3], nums2 [2]输出&#xff1a;2.00000解释&#xff1a;合并数组 [1,2,3] &#x…

VB高手帮忙看看这10道多选择题

1. ABD2. CE3. CD4. AD(钙奶....)5. AC6. BE7. BE8. CD9. CE10. CD

通过格式化字符串漏洞绕过canary

1.1 canary内存保护机制 1.1.1 canary工作原理 canary保护机制类似于/GS保护机制&#xff0c;是Linux下gcc编译器的安全保护机制之一&#xff0c;在栈中的结构如下图所示&#xff1a; 在函数初始化的时候回初始化一个随机的canary值置于缓冲区的末端&#xff0c;在函数返…

配置IIS服务器 - win10

1. 打开控制面板&#xff0c;点击 [ 程序 ] 2. 点击 [ 启动或关闭Windows功能 ] 3. 像如下配置 4. 浏览器上方输入 localhost&#xff0c;出现下方页面便配置成功

029-B+树(二)

点多转载于:https://www.cnblogs.com/igoodful/p/9112598.html

VB试卷。。多选题。。高手帮帮忙

1. ABD2. CE3. CD4. AD(钙奶....)5. AC6. BE7. BE8. CD9. CE10. CD

Leetcode - 验证回文串 E[125]

问题描述 给定一个字符串&#xff0c;验证它是否是回文串&#xff0c;只考虑字母和数字字符&#xff0c;可以忽略字母的大小写。 说明&#xff1a;本题中&#xff0c;我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true解释…