【LeetCode】123.买卖股票的最佳时间

news/2024/10/22 19:45:08/

清晰明了的思路是解决问题的至上法宝。如何把一个复杂的问题拆成简单的问题,就是我们需要考虑的。

1. 题目

在这里插入图片描述

2. 思想

这道题虽然是难题,但是思想比较简单。

题目要求说至多买卖两次,也就是说,也可以买卖一次,这种情况之前有分析过,比较简单。那么我们就着重看下买卖两次是怎么获取最大收益。

买卖两次那么就必须从中间某一天分割开。比如题中的样例[3,3,5,0,0,3,1,4],相当于拆成了[3,3,5] [,0,0,3,1,4] 两部分,再求两个小区间的最大值即可。也就是说,需要找出一个分割点,然后使得分割点左侧的钱卖出赚的钱 + 分割点右侧区间卖出赚的钱 最多即可。那么接下来就是计算分割点左侧区间的钱,和分割点右侧区间卖出可以赚的钱。这个计算比较简单,就是直接遍历然后迭代更新出最大值即可。

需要注意的是,买卖两次有时候不如买卖一次赚的钱多,所以最后,需要一起判断最大值是多少。

3. 代码

class Solution:def maxProfit(self, prices: List[int]) -> int:dp_left = [0] * len(prices)dp_right = [0] * len(prices)cur_min = prices[0]for i in range(1,len(prices)):dp_left[i] = max(dp_left[i-1], prices[i] - cur_min)cur_min = min(cur_min, prices[i])print(dp_left)cur_max = prices[-1]for i in reversed(range(len(prices)-1)):dp_right[i] = max(dp_right[i+1], cur_max - prices[i] )cur_max = max(cur_max, prices[i])print(dp_right)res = 0for i in range(1, len(prices)-1):res = max(res,dp_left[i] + dp_right[i+1] )return max(res, dp_left[-1], dp_right[0])

http://www.ppmy.cn/news/1541135.html

相关文章

智能听诊器:宠物健康教育的新工具

在宠物健康护理领域,智能听诊器正扮演着越来越重要的角色。它不仅仅是一个监测工具,更是宠物健康教育的新工具。通过与智能手机应用程序的结合,智能听诊器为宠物主人提供了一个互动学习的平台,让他们能够更好地理解宠物的生理信号…

【C语言】指针访问一维数组

指针,指到一个变量的地址。 那么对于一维数组,存储空间是连续的。指针指向数组中第一个元素的地址,所以可以通过移动指针进行依次访问。 数组理解起来也可以看作一个指针。main函数中第二行,此处没有加取地址符号&。 从第一个…

关于鸿蒙学习之遇到的问题——ERROR: Invalid dependency entry

前几天刚更新最新的ide 900,然后我就重新构建项目遇到的问题。直接抛出报错 ““F:\HarmonyOS\HarmonyOSIDE\DevEco Studio\tools\ohpm\bin\ohpm.bat”” install --all --registry https://repo.harmonyos.com/ohpm/ --strict_ssl true ohpm ERROR: Invalid depend…

RootNeighboursDataset(helpers.dataset_classes文件中的root_neighbours_dataset.py)

任务类型:回归 用途:在 `RootNeighboursDataset` 中,任务是给定一棵根树,预测根节点度数为6的邻居的特征平均值。因此,模型需要基于根节点的结构,找到度为6的邻居,并计算其特征的平均值。这属于回归问题,因为目标是预测连续值(特征的平均值)。 from helpers.dataset_…

【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)

目录 一、引言 二、令牌分类(token-classification) 2.1 概述 2.2 Facebook AI/XLM-RoBERTa 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline返回参数 ​​​​​​​​​​​​​​ 2.4 pipeline…

第7章 网络请求和状态管理

一、Axios 1 Axios概述 Axios是一个基于Promise的HTTP库,可以发送get、post等请求,它作用于浏览器和Node.js中。当运行在浏览器时,使用XMLHttpRequest接口发送请求;当运行在Node.js时,使用HTTP对象发送请求。 Axios的…

使用HIP和OpenMP卸载的Jacobi求解器

Jacobi Solver with HIP and OpenMP offloading — ROCm Blogs (amd.com) 作者:Asitav Mishra, Rajat Arora, Justin Chang 发布日期:2023年9月15日 Jacobi方法作为求解偏微分方程(PDE)的基本迭代线性求解器在高性能计算&#xff…

每日一练 —— set习题

1. 两个数组的交集 题目链接:349. 两个数组的交集 - 力扣(LeetCode)https://leetcode.cn/problems/intersection-of-two-arrays/description/ 这题使用set,因为set具有排序和去重的特性 思路: 1.两个值相等就是交集 2.…