【LeetCode】123.买卖股票的最佳时间
清晰明了的思路是解决问题的至上法宝。如何把一个复杂的问题拆成简单的问题,就是我们需要考虑的。
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])
相关文章:

【LeetCode】123.买卖股票的最佳时间
清晰明了的思路是解决问题的至上法宝。如何把一个复杂的问题拆成简单的问题,就是我们需要考虑的。 1. 题目 2. 思想 这道题虽然是难题,但是思想比较简单。 题目要求说至多买卖两次,也就是说,也可以买卖一次,这种情况…...

elk部署安装
elk部署 前提准备1、elasticsearch2、kibana3、logstash 前提准备 1、提前装好docker docker-compose相关命令 2、替换docker仓库地址国内镜像源 cd /etc/docker vi daemon.json # 替换内容 {"registry-mirrors": [ "https://docker.1panel.dev", "ht…...

使用 JAX 进行 LLM 分布式监督微调
LLM distributed supervised fine-tuning with JAX — ROCm Blogs (amd.com) 24年1月25日,Douglas Jia 发布在AMD ROCm 博客上的文章。 在这篇文章中,我们回顾了使用 JAX 对基于双向编码器表示(BERT)的大型语言模型(LL…...

【简单版】通过 Window.performance 实现前端页面(性能)监控
1 背景 前端监控系统告警xx接口fetchError 问题:前端监控系统没有更多的错误信息,查询该fetch请求对应的接口日志返回200状态码、无请求异常记录,且后台能查到通过该fetch请求成功发送的数据。那是前端页面的错误还是前端监控系统的问题&…...

微信小程序考试系统(lw+演示+源码+运行)
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序考试系统的开发全过程。通过分析微信小程序考试系统管理的不足,创建了一个计算机管理微信小程序考试系统的方案。文章介绍了微信小程序考…...

手机摄影入门
感觉会摄影的人是能够从生活中发现美的人。 我不太会拍照,觉得拍好的照片比较浪费时间,而且缺乏审美也缺乏技巧,所以拍照的时候总是拍不好。但有时候还是需要拍一些好看的照片的。 心态和审美可能需要比较长时间提升,但一些基础…...

微信小程序手机号授权获取(aes加密手机号)
<view class="container"> <view class=topTabSwiper> <view class=tab {{currentData == 0 ? "tabBorer" : ""}} data-current = "0" bindtap=checkCurrent>一键授权<span class="tab_bor"><…...

asyn queueRequest使用实例
使用queueRequest读写端口驱动的示例,驱动驱动程序使用一个基于asyn实现了asynCommon和asynOctet的驱动程序-CSDN博客中编写的驱动程序,本程序的C代码如下: #include <stdlib.h> #include <stdio.h> #include <string.h>#…...

关于jmeter设置为中文问题之后无法保存设置的若干问题
1、jemeter如何设置中文模式 Options--->Choose Language--->Chinese(Simplifies), 如此设置后就可显示中文模式(缺点:下次打开还是英文);如下图所示: 操作完成之后: 但是下次重启之后依旧是英文; 2、在jmeter.…...

基于FPGA的信号发生器verilog实现,可以输出方波,脉冲波,m序列以及正弦波,可调整输出信号频率
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 输出方波 输出脉冲波 输出m随机序列 输出正弦波 2.算法运行软件版本 vivado2019.2 3.部分核心程序 (完整…...

背景全文及翻译
背景 Oracle数据向MySQL同步,没有最新数据,于是在plsql手敲SQL筛选最新数据时,执行报错。 问题描述 通过日期字段筛选最近的数据,我用了类似这样的语句: SELECT * FROM orders WHERE order_date > 2022/01/01;我…...

JAVA地狱级笑话
为什么Java开发者总是不怕黑暗? 因为他们总是有null指针来照亮路。 Java程序员最讨厌的音乐是什么? Garbage Collection旋律,节奏总是让他们烦躁。 为什么Java中的HashMap很擅长社交? 因为它总是能快速找到key对应的朋友。 Java开…...

宝塔PHP8.1安装fileinfo拓展失败解决办法
在宝塔面板中安装PHP8.1后,安装fileinfo扩展一直安装不上,查看日志有报错,于是手动来安装也报错。 宝塔报错: 手动命令行编译安装同,也有报错 cd /www/server/php/81/src/ext/fileinfo/ make distclean ./configure …...

Python 魔术方法
在Python中,魔术方法(Magic Methods)或称为双下划线方法(Dunder Methods),是一类具有特殊用途的方法,其名称前后都带有两个下划线(如 __init__、__str__ 等)。这些方法定…...

03 go语言(golang) - fmt包基本类型
fmt包 在Go语言中,fmt 包是一个非常重要且广泛使用的标准库包,它提供了格式化I/O(输入/输出)功能,类似于C语言中的 printf 和 scanf。通过这个包,你可以读取输入并将数据格式化输出到标准输出或其他写入器…...

Docker本地镜像发布到阿里云镜像服务的简易指南
1 阿里云容器镜像服务 阿里云容器镜像服务(Alibaba Cloud Container Registry,简称ACR)是一个为容器镜像、Helm Chart等云原生资产提供安全托管及高效分发的平台。它支持多架构容器镜像,包括Linux、Windows、ARM等,以…...

大数据学习---快速了解clickhouse数据库
ClickHouse数据库介绍 ClickHouse是一款由Yandex开发的列式数据库管理系统(DBMS),适用于在线分析处理(OLAP)场景。它具有高性能、可扩展性、实时更新等特点,适用于处理大规模数据。 特点 列式存储&#x…...

哪些方法可以缓解面试紧张?
面试紧张是许多人在面对重要职业机会时的一种常见情绪。虽然一定程度的紧张可能激发人的潜能,但过度的紧张则可能影响到面试表现。为了缓解面试紧张,以下是一些有效的方法: 1.充分准备: 深入了解公司背景、职位要求以及公司文化…...

即时通讯未读消息计数
单聊未读消息计数 未读消息的计数,分为两个部分:增加和减少 其中,未读消息计数的增加,是由数据库(redis)在写入消息的同时,增加对应接收方的未读消息计数 在线 用户在线时,客户端…...

在Openshift(K8S)上通过EMQX Operator部署Emqx集群
EMQX Operator 简介 EMQX Broker/Enterprise 是一个云原生的 MQTT 消息中间件。 我们提供了 EMQX Kubernetes Operator 来帮助您在 Kubernetes 的环境上快速创建和管理 EMQX Broker/Enterprise 集群。 它可以大大简化部署和管理 EMQX 集群的流程,对于管理和配置的知…...

Python酷玩之旅_数据分析入门(matplotlib)
导览 前言matplotlib入门1. 简介1.1 Pairwise data1.2 Statistical distributions1.3 Gridded data1.4 Irregularly gridded data1.5 3D and volumetric data 2. 实践2.1 安装2.2 示例 结语系列回顾 前言 翻看日历,今年的日子已划到了2024年10月19日,今天…...

uiautomatorviewer安卓9以上正常使用及问题处理
一、安卓9以上使用uiautomatorviewer问题现象 打开Unexpected error while obtaining UI hierarchy 问题详情 Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException 二、问题处理 需要的是替换对应D:\software\android-sdk-windows…...

Go语言gRPC快速入门
文章目录 前言gRPC是什么Go语言的gRPC技术栈准备工作接口定义代码生成服务端代码编写客户端代码编写效果演示完整代码链接最后 前言 你好,我是醉墨居士,这篇博客想帮助初学者能够快速入门gRPC,希望能够为你节省宝贵的时间,让时间…...

Golang | Leetcode Golang题解之第479题最大回文数乘积
题目: 题解: func largestPalindrome(n int) int {if n 1 {return 9}upper : int(math.Pow10(n)) - 1for left : upper; ; left-- { // 枚举回文数的左半部分p : leftfor x : left; x > 0; x / 10 {p p*10 x%10 // 翻转左半部分到其自身末尾&…...

UDP协议讲解
预备知识: 端口号port: 我们在正常网络通信时,实际上是进程在互相通信。 我们所有的网络通信的行为,本质上都是进程间通信。 对双方而言,1.先保证数据能到达自己的机器 ip解决 2.找到指定的进程 端口号 ip地址用来…...

交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention轴承故障识别模型
往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…...

CSDN Markdown 编辑器语法大全
Markdown 是一种轻量级标记语言,它以简洁、易读易写的特点,被广泛应用于技术文档、博客文章、笔记等领域。CSDN 的 Markdown 编辑器为用户提供了丰富的功能,让用户能够轻松地创建格式规范、内容丰富的文档。以下是一份详细的 CSDN Markdown 编…...

TCP/IP 协议【四次挥手】简要说明
四次挥手是为了确保数据的完整性和可靠性,解决的主要问题是双方在断开连接时,可能还有未完成传输的数据或者未被接收的数据。 具体来说,四次挥手解决的问题是: 第一次挥手(发送方向接收方发送FIN包)&#…...

第11篇:网络安全协议
目录 引言 11.1 安全套接字层(SSL)和传输层安全(TLS)协议 11.1.1 SSL/TLS 的工作原理 11.1.2 SSL/TLS 的应用场景 11.2 虚拟专用网(VPN)和 IP 安全协议(IPSec) 11.2.1 VPN 的工…...

ES-入门-javaApi-文档-新增-删除
新增指定索引的文档数据的代码如下: package com.atgulgu.es.test;import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexRe…...