首页 > 编程语言 >代码随想录算法训练营第46天 | 121. 买卖股票的最佳时机 、122.买卖股票的最佳时机II 、123.买卖股票的最佳时机III

代码随想录算法训练营第46天 | 121. 买卖股票的最佳时机 、122.买卖股票的最佳时机II 、123.买卖股票的最佳时机III

时间:2024-06-23 23:56:47浏览次数:27  
标签:买卖 股票 number 最佳时机 https prices dp

股票问题是一个动态规划的系列问题,前两题并不难,第三题有难度。

  1. 买卖股票的最佳时机
    视频讲解:https://www.bilibili.com/video/BV1Xe4y1u77q
    https://programmercarl.com/0121.买卖股票的最佳时机.html
/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    const dp = new Array(prices.length).fill(0).map(()=>new Array([]))
    dp[0][0] = -prices[0];
    dp[0][1] = 0;
    for (let i=1;i<prices.length;i++) {
        dp[i][0] = Math.max(dp[i-1][0], -prices[i]);
        dp[i][1] = Math.max(dp[i-1][1], dp[i-1][0] + prices[i]);
    }

    return dp[prices.length-1][1];
};

122.买卖股票的最佳时机II
视频讲解:https://www.bilibili.com/video/BV1D24y1Q7Ls
https://programmercarl.com/0122.买卖股票的最佳时机II(动态规划).html

可以贪心
/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    const dp = new Array(prices.length).fill(0).map(()=>new Array([]));
    dp[0][0] = -prices[0];
    dp[0][1] = 0;
    for (let i=1;i<prices.length;i++) {
        dp[i][0] = Math.max(dp[i-1][0], dp[i-1][1] - prices[i]);
        dp[i][1] = Math.max(dp[i-1][1], dp[i-1][0] + prices[i]);
    }

    return dp[prices.length - 1][1];
};

123.买卖股票的最佳时机III

这道题一下子就难度上来了,关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。
视频讲解:https://www.bilibili.com/video/BV1WG411K7AR
https://programmercarl.com/0123.买卖股票的最佳时机III.html

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
 const len = prices.length;
    const dp = new Array(len).fill(0).map(x => new Array(5).fill(0));
    dp[0][1] = -prices[0];
    dp[0][3] = -prices[0];
    for (let i = 1; i < len; i++) {
        dp[i][0] = dp[i - 1][0];
        dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);
        dp[i][2] = Math.max(dp[i - 1][2], dp[i - 1][1] + prices[i]);
        dp[i][3] = Math.max(dp[i - 1][3], dp[i - 1][2] - prices[i]);
        dp[i][4] = Math.max(dp[i - 1][4], dp[i - 1][3] + prices[i]);
    }
    return dp[len - 1][4];
};

标签:买卖,股票,number,最佳时机,https,prices,dp
From: https://www.cnblogs.com/yuanyf6/p/18264165

相关文章

  • 如何使用ig507金融数据库的股票接口,股票API来获取MACD指标
    一、MACD指标简介MACD(MovingAverageConvergenceDivergence,移动平均收敛/发散)是一种趋势跟踪动量指标,用于分析股票或其他金融产品的价格趋势。MACD由两部分组成:差离值(DIF)和信号线(DEA)。DIF是短期(通常12天)指数移动平均线(EMA)与长期(通常26天)EMA的差值,再通过一个平滑期(通常9天)的EMA......
  • 如何使用ig507金融数据库的股票接口,股票API来获取MACD指标
    一、MACD指标简介MACD(MovingAverageConvergenceDivergence,移动平均收敛/发散)是一种趋势跟踪动量指标,用于分析股票或其他金融产品的价格趋势。MACD由两部分组成:差离值(DIF)和信号线(DEA)。DIF是短期(通常12天)指数移动平均线(EMA)与长期(通常26天)EMA的差值,再通过一个平滑期(通常9天)的E......
  • Day 30 | 122.买卖股票的最佳时机II、55. 跳跃游戏 、45.跳跃游戏II、 1005.K次取反后
    122.买卖股票的最佳时机II本题解法很巧妙,本题大家可以先自己思考一下然后再看题解,会有惊喜!https://programmercarl.com/0122.买卖股票的最佳时机II.html给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成......
  • 力扣-714. 买卖股票的最佳时机含手续费
    1.题目介绍题目地址(714.买卖股票的最佳时机含手续费-力扣(LeetCode))https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/题目描述给定一个整数数组 prices,其中prices[i]表示第 i 天的股票价格;整数 fee代表了交易股票的手续费用。......
  • 力扣-122. 买卖股票的最佳时机 II
    1.题目题目地址(122.买卖股票的最佳时机II-力扣(LeetCode))https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/题目描述给你一个整数数组prices,其中 prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最......
  • 力扣-121. 买卖股票的最佳时机
    1.题目题目地址(121.买卖股票的最佳时机-力扣(LeetCode))https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/题目描述给定一个数组prices,它的第 i个元素 prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个......
  • Matlab数学建模实战应用:案例1 - 股票价格预测
    目录前言一、问题分析二、模型选择三、Matlab代码实现完整代码示例四、模型改进1.引入更多特征2.使用更复杂的模型3.模型参数优化五、实例总结总结前言股票价格预测是金融工程中的重要问题,利用数学建模可以帮助分析和预测股票价格的波动趋势,帮助投资者做出更......
  • R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格|附代码数据
    全文链接:http://tecdat.cn/?p=18860最近我们被客户要求撰写关于时间序列的研究报告,包括一些图形和统计输出。时间序列分析是统计学中的一个主要分支,主要侧重于分析数据集以研究数据的特征并提取有意义的统计信息来预测序列的未来值简介时序分析有两种方法,即频域和时域。前者主......
  • 投资股票必须能够忍受亏损
    《战胜华尔街》的第三章讲的是如何选择基金。我不买基金,也没有买基金的打算,因为我坚信《业余投资者比专业投资者业绩更好》(这是玩笑话)。但是我觉得第三章中的有几句话值得学习一下,并且能够跟第五章的某些内容结合在一起来看。那就是投资股票必须能够忍受亏损。在第三章《基金......
  • Transformer预测 | 基于Transformer的股票价格预测(Matlab)
    文章目录预测效果文章概述模型描述程序设计参考资料预测效果文章概述Transformer预测|基于Transformer的股票价格预测(Matlab)Transformer模型本质上都是预训练语言模型,大都采用自监督学习(Self-supervisedlearning)的方式在大量生语料上进......