剑指Offer——股票的最大利润(JS实现) |刷题打卡

简介: 剑指Offer——股票的最大利润(JS实现) |刷题打卡

前言

掘金团队号上线,助你 Offer 临门! 点击 查看详情

题目描述

image.png

解题思路

  • 首先定义一个数组用来存储当天之后股票的价格-今天的价格的最大值
  • 遍历每一个元素的同时,取出剩余元素
  • 使用JS自带的sort方法,将剩余元素的最大值取出来,然后存到结果数组中
  • 使用sort方法将结果数组中的最大值进行返回即可

解题代码

var maxProfit = function (prices) {
    if (prices.length === 0) return 0;
    const result = [];
    for (let i = 0; i < prices.length; i++) {
        const remain = prices.slice(i + 1);
        const remainMax = remain.sort((num1,num2) => num2 - num1)[0];
        if (remainMax === undefined) {
            result.push(0);
        } else {
            result.push(remainMax - prices[i]);
        }
    };
    result.sort((num1,num2) => num2 - num1);
    return result[0];
};

总结

  • 本题属于较为简单动态规划问题
  • 最容易出错的地方在于超时了
  • 本题给出的不是最优解,只是作者的个人思路
  • 本题可以通过在遍历每个元素的时候,不断更新最大值和最小值的方法,来求解
相关文章
|
3月前
|
存储 算法 JavaScript
JS算法-买卖股票的时机
JS算法-买卖股票的时机
|
4月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
23 0
|
存储 JavaScript 前端开发
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
JavaScript 前端开发
利用JavaScript实现二级联动
利用JavaScript实现二级联动 要实现JavaScript二级联动效果,首先要确定需要哪些技术: 二维数组 for in循环 new Option(text,value,true,true) add(option,null) onchange() 表单事件 HTML代码: &lt;!-- &lt;input type=&quot;text&quot; id=&quot;text&quot;&gt; --&gt; 请选择省份: &lt;select name=&quot;&quot; id=&quot;provinces&quot;&gt; &lt;!-- &lt;option value=&quot;江苏省&quot;&gt;江苏省&lt;/option&gt;
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
167 0
|
移动开发 JavaScript weex
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
217 0
|
JavaScript
JS中实现或退出全屏
JS中实现或退出全屏
153 0