最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 121. 买卖股票的最佳时机|刷题打卡

    正文概述 掘金(风物长宜放眼量water)   2021-03-02   717

    一、题目描述

    121. 买卖股票的最佳时机|刷题打卡

    二、思路分析:

    分析题目:求数组中两个值之前的最大差值,限制差值必须是后一个位置减去前一个位置,如果小于 0,则返回 0,按照这个思路,直接就进入暴力循环,通过两层循环,实现实现对所有的差值进行比较。

    var maxProfit = function (prices) {
      let max = 0;
      for (let i = 0; i < prices.length - 1; i++) {
        for (let j = i + 1; j < prices.length; j++) {
          const diff = prices[j] - prices[i];
          // 错误记录:第一次忘了写 max,不是一次通过
          max = Math.max(max, diff);
        }
      }
    
      return max;
    };
    

    存在问题:当数组长度过长,报错:运行超出时间限制

    时间复杂度:O(n^2);

    空间复杂度:O(1), 只使用了常数个变量。

    换一个思路理解,如果我们在第i天需要获得最大的利润,那么一定是减去在之前[0, i-1]个元素中的最低价格从而得到最大的利润。

    var maxProfit = function (prices) {
      let minPrice = Infinity;
      let maxProfit = 0;
      for (let i = 0; i < prices.length; i++) {
        if (prices[i] < minPrice) {
          minPrice = prices[i];
        } else if (maxProfit <  prices[i] - minPrice) {
          maxProfit =  prices[i] - minPrice
        }
      }
    
      return maxProfit;
    };
    
    

    时间复杂度:一次循环,O(n);

    空间复杂度:O(1),只使用了常数个变量。

    三、总结:

    本题的关键是思考的方向,在做算法题的时候多换几个方向思考,不用一言不合就上暴力,感觉当你进入暴力之后,思维就会逐渐固化,往这个方向去想,很难想到更好的方法了。而是应该在最开始的时候分析题目是什么类型,然后按照类型进行思考划分,是否能够这样解决。

    本题是股票系列里面最简单的一道题,本次学习计划先把股票系列问题解决掉。加油!


    起源地下载网 » 121. 买卖股票的最佳时机|刷题打卡

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元