• 剑指 Offer 63. 股票的最大利润(中等)


    通过率 63.4%

    题目链接

    题目描述:

    假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

    示例 1:

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

    示例 2:

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

    限制:

    0 <= 数组长度 <= 10^5

    思路:

    用一个变量维护此前历史最低买入价,将此时卖出所得利润与之前最高利润作比较,保留更高的利润,那么遍历一次就能得到结果

     1 /*JavaScript*/
     2 /**
     3  * @param {number[]} prices
     4  * @return {number}
     5  */
     6 var maxProfit = function(prices) {
     7     let buy = prices[0] //历史最低买入价
     8     let maxq = 0 //最高利润
     9     prices.forEach(p => {
    10         buy = Math.min(buy, p)
    11         maxq = Math.max(maxq, p-buy)
    12     })
    13     return maxq
    14 };
  • 相关阅读:
    C++ 11 :override 关键字的使用
    vsphere部署说明
    Windows 下部署Subversion
    Centos 7 最小化部署zabbix
    在vmware中安装mac os
    如何将OS dmg文件制作成U盘启动
    HDU1518(dfs)java/ c++
    HDU1010(bfs)
    HDU1495(bfs)
    HD1285(拓扑排序)
  • 原文地址:https://www.cnblogs.com/wwqzbl/p/15175714.html
Copyright © 2020-2023  润新知