算法题:买卖股票的最佳时机 II (贪心算法解决股票问题)
这道题是贪心算法的中级难度练习题,由于题目设定,整个价格都是透明的,这里并不涉及需要预测股票涨势的问题。解决思路不难,就是一旦股票价格开始下降了就买入,一旦上升了,就赶紧卖出。(完整题目附在了最后)

代码如下:
class Solution(object):def maxProfit(self, prices):has_stock = Falseprofit = 0for i in range(len(prices) - 1):if not has_stock:if i < len(prices) - 1 and prices[i] < prices[i + 1]:profit = profit - prices[i]has_stock = Trueelif has_stock:if prices[i] > prices[i + 1]:profit = profit + prices[i]has_stock = Falseif has_stock:return profit + prices[-1]elif profit == 0:profit = prices[-1] - prices[0]if profit < 0:return 0return profit
完整题目:
122. 买卖股票的最佳时机 II
给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
示例 1:
输入:prices = [7,1,5,3,6,4] 输出:7 解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。总利润为 4 + 3 = 7 。
示例 2:
输入:prices = [1,2,3,4,5] 输出:4 解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。总利润为 4 。
示例 3:
输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0 。
提示:
1 <= prices.length <= 3 * 10^40 <= prices[i] <= 10^4
相关文章:
算法题:买卖股票的最佳时机 II (贪心算法解决股票问题)
这道题是贪心算法的中级难度练习题,由于题目设定,整个价格都是透明的,这里并不涉及需要预测股票涨势的问题。解决思路不难,就是一旦股票价格开始下降了就买入,一旦上升了,就赶紧卖出。(完整题目…...
Redis-持久化机制
持久化机制介绍 RDBAOFRDB和AOF对比 RDB rdb的话是利用了写时复制技术,他是看时间间隔内key值的变化量,就比如20秒内如果有5个key改变过的话他就会创建一个fork子进程(bgsave),通过这个子进程,将数据快照进…...
【LeetCode热题100】--155.最小栈
155.最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元…...
Allegro 17.2如何直接更新元件封装?
想必很多从事电子设计的小伙伴,都有这样的经历:有些时候原理图和PCB设计是由不同的工程师负责,然后偶尔需要在没有原理图的情况下直接对PCB作品进行操作,如更新元件封装等操作,这种环节不仅费时费力,效率贼…...
高效数据管理:Java助力实现Excel数据验证
摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在Java中,开发者可以使用一些开源的库(如Apache POI)…...
Easysearch Chart 0.2.0都有哪些变化
Easysearch Chart 包更新了,让我们来看看都有哪些变化: Docker 镜像升级 Service 名称调整,支持 NodePort 模式部署 现在让我们用 NodePort 模式部署一下: # helm search repo infinilabs NAME CHART VERSION …...
RV1126-RV1109-进入uboot的按键和名字显示-HOSTNAME
今天添加一个小功能,就是uboot是按CTRLC进入的 今日我做了一个定制,让按L或者l让也进入uboot指令模式,并且修改主板名字显示 默认是CTRLC:键码值是0x03(ASCII对照表) 于是代码中跟踪: //rv1126_rv1109/u-boot/common/console.c int ctrlc(void) { #ifndef CONFIG_SANDBOXif (…...
学习vue-router
可参见: vue-router 详解_vue router_七月J的博客-CSDN博客 https://www.cnblogs.com/chen-ao666/p/17144552.html vue-router的使用 使用vue-router的步骤: 创建路由组件 配置路由映射: 组件和路径映射关系 使用路由: 通过和 <router-link>: 该标签是一个vue-router中…...
Python爬虫提高排名
在如今竞争激烈的互联网时代,网站的SEO优化变得尤为重要。而Python爬虫作为一种强大的工具,可以帮助网站主们提升搜索排名,吸引更多的流量和用户。本文将为您揭秘如何利用Python爬虫来改善您的SEO优化,并帮助您提升搜索排名。无论…...
SQL获取正数第N个或倒数第N个数据
这里我们使用Order By与Limit的组合: Order By:可以将某个序列值按照从大到小或从小到大排序Limit:如果类似Limit 5表示前5个,Limit 3,5表示从第4个位置(以0为开始)开始往后取5个 通过这样的组合就可以实…...
链表(2)——带头双向循环链表
🍁一、链表的分类 🌕1.单向或者双向 🌕2.带头或者不带头(有无哨兵) 🌕3.循环或者不循环 🌕4.无头单向非循环链表(常用) 🌕5.带头双向循环链表(常用…...
C语言 函数指针
函数指针是C语言中的一种特殊类型,它允许你像操作变量一样操作函数。函数指针的主要用途是存储并后续调用一组函数。 在C语言中,函数指针的定义通常如下所示: 返回类型 (*指针变量名)(参数类型) 例如,如果你有一个返回整数并接受…...
F. Vasilije Loves Number Theory
Problem - F - Codeforces 思路:分析一下题意,对于第一种操作来说,每次乘以x,那么nn*x,然后问是否存在一个a使得gcd(n,a)1并且n*a的约数个数等于n,有最大公约数等于1我们能够知道其实这两个数是互质的&…...
electron打包后主进程下载文件崩溃
electronvue3写了一个小项目,实现了一个文件下载功能 存在的问题 打包后,应用下载文件崩溃代码 // 渲染进程window.electron.ipcRenderer.invoke(save-file, {path: r.filePath,fileurl: previewUrl,}).then(response > {console.log(response ----…...
Spring实例化源码解析之Custom Events下集(九)
上集从官网的角度讲解了基本的使用和源码的内容,没有深入的进行分析,本章将从源码的角度分析ApplicationEvent、ApplicationListener、ApplicationEventMulticaster这三者之间的关系。 initApplicationEventMulticaster 上一章后续部分给出了源码的含义…...
python numpy库关键函数说明
python numpy库函数说明 np.argwhere()np.dtype()np.shape()np.zeros() np.argwhere() 输入参数是一个基本的逻辑表达式,输出检索结果的索引值。 >>> x np.arange(6).reshape(2,3) >>> x array([[0, 1, 2],[3, 4, 5]]) >>> np.argwhe…...
【Linux C】Linux如何执行一个程序(程序存储空间、系统调用、内核调用)
文章目录 一、程序存储空间1.1 C语言程序存储空间1.2 用户空间和内核空间1.3 用户模式和内核模式 二、内核调用-系统调用-C语言库函数2.1 系统调用和内核调用2.2 C语言库函数 三、Linux如何执行一个程序 一、程序存储空间 本节说的空间主要是指内存空间,即程序如何分…...
IP协议总结
一、定义。 IP全称为Internet Protocol,是TCP/IP协议族中的一员,负责实现数据在网络上的传输。它是一种无连接、不可靠的数据报协议。 IP协议常用于Internet网络和局域网中,它通过将数据包进行分组并进行逐跳转发来实现数据在网络中的传输。…...
微信支付v2
文档: https://pay.weixin.qq.com/wiki/doc/api/index.html 微信小程序:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter11_1 需要一个微信认证后的小程序,,还需要一个,在微信商户平台,&…...
tcpdump(二)命令行参数讲解(一)
一 tcpdump实战详解 1、我们做抓包,一般都需要指定条件,保证对系统的CPU、内存、磁盘资源不会产生过大的响应备注: 遇到过tcpdump持续抓包导致系统挂了2、条件:1) tcpdump的 基础命令选项参数2) 真正的 过滤条件 抓包工具tcpdump用法说明 ① 参数学…...
别再踩坑了!Vue3项目里用rtsp2web搞定大华相机直播流的保姆级配置
Vue3与大华相机RTSP流集成实战:从避坑到高稳定直播方案 大华相机的RTSP流在Vue3项目中集成时,开发者常会遇到跨域、解码失败、黑屏等问题。本文将深入剖析这些痛点,提供一套经过验证的高稳定性解决方案。 1. 环境准备与核心工具链 在开始集成…...
新手必看:在快马平台通过实践项目轻松理解rag工作原理
今天想和大家分享一个特别适合新手理解RAG(检索增强生成)技术的实践项目。作为一个刚接触NLP的小白,我发现通过动手实践比单纯看理论文档要高效得多。下面就用最简单的代码带大家走通RAG的核心流程,全程在InsCode(快马)平台上完成…...
别再被‘绝对安全’忽悠了:聊聊量子密钥分发里那个叫‘诱骗态’的‘安全补丁’
量子密钥分发中的"安全补丁":诱骗态如何守护通信防线 量子通信常被冠以"绝对安全"的美誉,但鲜为人知的是,这项前沿技术同样需要不断打补丁来应对现实威胁。就像软件系统需要安全更新一样,量子密钥分发&#…...
Pixel Dream Workshop 学术研究辅助:快速生成论文插图与概念图
Pixel Dream Workshop 学术研究辅助:快速生成论文插图与概念图 1. 科研绘图的痛点与解决方案 科研工作者经常面临一个共同难题:如何高效制作专业、美观的学术图表。传统绘图软件学习曲线陡峭,而外包设计又成本高昂、周期长。Pixel Dream Wo…...
Kali桥接模式实战:从静态IP到动态DHCP的完整网络配置指南
1. 为什么需要桥接模式? 很多刚接触Kali Linux的朋友都会有这样的疑问:为什么虚拟机要配置桥接模式?简单来说,桥接模式让虚拟机就像一台真实存在的物理设备一样接入网络。想象一下你家里新买了一台电脑,插上网线就能直…...
芯片创业资金消耗与团队构建全解析
芯片初创公司的资金消耗分析:从架构设计到流片量产1. 芯片创业的资金挑战概述芯片设计行业作为典型的技术密集型产业,其创业过程面临着独特的资金挑战。与互联网创业不同,芯片公司从组建团队到产品量产需要经历漫长的研发周期和巨额的资金投入…...
华为eNSP新手避坑指南:用VRF模拟多租户网络,为什么你的Ping不通?
华为eNSP实战:VRF多租户网络排错全解析 第一次在华为eNSP中用VRF模拟多租户网络时,那种"明明配置都对,但就是Ping不通"的挫败感,相信很多网络工程师都深有体会。VRF作为网络虚拟化的核心技术,其路由隔离特性…...
搜索引擎技巧
一.搜索行动框架第三步:抽取关键词、构造检索式在选择好搜索工具之后,紧接着就是抽取关键词、构造检索式了。检索式通常由三个要素组成。• 关键词:这个非常容易理解,我们常常在搜索过程中只会输入关键词。但很多时候,…...
【专栏一:AI基础01】-【一张图讲清楚什么是大模型】
专栏一:AI基础入门-什么是大模型?大模型通俗解释大模型通俗解释 我们可以把大模型想象成一个超级大脑: 它在诞生之初,会先阅读人类海量的文字、知识、书籍、网页、对话,把所有信息消化成一套庞大的数学规律和语言逻辑&…...
3步解锁Yuedu书源:终结小说断更烦恼,实现阅读自由
3步解锁Yuedu书源:终结小说断更烦恼,实现阅读自由 【免费下载链接】Yuedu 📚「阅读」APP 精品书源(网络小说) 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 你是否经历过这样的时刻:熬夜追更…...
