【数据结构笔记】Leetcode买卖股票的最佳时机 系列总结
121.买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例 1:
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
方法一次遍历【PYTHON】O(n):
注意理解红色部分 “如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 ” 的意思。如果说每天只能买入或者卖出一次,那么就是用局部的最低价购买与局部最高价售出,但是,其实可以理解为,每天至多完成一次购买和一次售出操作,因为,同一天价格不变,买入卖出获利为0,那么我们的代码便可以如下:
class Solution(object):def maxProfit(self, prices):""":type prices: List[int]:rtype: int"""mn = float('inf')mx = 0 for price in prices:mn = min(mn, price)mx = max(mx, price - mn) return mx
122 买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例 1:
输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:
输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例 3:
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
【数据结构笔记】Leetcode买卖股票的最佳时机 系列总结相关推荐
- LeetCode买卖股票的最佳时机系列总结
LeetCode买卖股票的最佳时机系列总结 此类动态规划从二维动规理解后优化到一维动规,部分题目还可以用到贪心. 目录: 121 买卖股票的最佳时机1 122 买卖股票的最佳时机2 123 买卖股票的 ...
- 买卖股票的最佳时机系列
买卖股票的最佳时机系列 1. 概述 2. dp 数组定义为状态 2.1 买卖股票的最佳时机 2.2 买卖股票的最佳时机 II 2.3 最佳买卖股票时机含冷冻期 2.4 买卖股票的最佳时机含手续费 3. ...
- LeetCode 买卖股票的最佳时机 - 超详细讲解系列题
1.分析 使用通用方法,也即动态规划DP (1)LeetCode 121. 买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) { ...
- Leetcode刷题笔记 714. 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 时间:2020年12月17日 知识点:动态规划 题目链接:https://leetcode-cn.com/problems/best-time-to-buy-an ...
- [LeetCode刷题笔记]714 - 买卖股票的最佳时机含手续费(C++/Python3/Java/动态规划/贪心)
一.题目描述 给定一个整数数组 prices 和 整数 fee ,其中 prices[i] 表示第 i 天的股票价格,fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付 ...
- 【2021/5/17 刷题笔记】买卖股票的最佳时机与动态规划
文章目录 买卖股票的最佳时机 [题目] [我的方法] 执行结果: 动态规划算法 1.状态定义 2.设置数组边界值 3.推导状态转换方程. 参考代码 执行结果: 复杂度分析: 时间复杂度 空间复杂度 * ...
- Leetcode 买卖股票的最佳时机
买卖股票的最佳时机 题目描述: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖 ...
- “买卖股票的最佳时机” 系列——我来教你稳赚不亏~
目录 前言 一.买卖股票的最佳时机 -->指定次数交易(1次) 1.1.dp定义 1.2.递推公式 1.3.遍历顺序 1.4.初始化 1.5.解题代码 二.买卖股票的最佳时机II -->交 ...
- 【dp】买卖股票的最佳时机系列题目
文章目录 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机 II 309. 最佳买卖股票时机含冷冻期 123. 买卖股票的最佳时机 III 188. 买卖股票的最佳时机 IV 121. 买卖 ...
- LeetCode 买卖股票的最佳时机 6道题1个解法总结
一个方法解决6道买卖股票题:来自LeetCode题解 一.穷举框架 利用「状态」进行穷举.我们具体到每一天,看看总共有几种可能的「状态」,再找出每个「状态」对应的「选择」.我们要穷举所有「状态」,穷举 ...
最新文章
- 大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)
- python实现8大排序算法
- 黑猿大叔-译文 | TensorFlow实现Batch Normalization
- Python标准库参考-sched
- css两列显示,div+css如何控制信息分两列显示?
- 互联网金融数据分析-笔记
- Bailian4129 变换的迷宫【BFS】
- 使用钢片刷锡膏的一种解决方案
- 【Java】俄罗斯方块带背景音乐
- java 发 腾讯企业邮_JAVA使用腾讯企业邮箱发送邮件时报错Could not connect to SMTP host...
- 共模干扰和差模干扰的理解
- 单片机AC220V过零检测电路仿真及改进仿真
- 数据库mysql的基本操作命令(全)
- 计算Fisher信息之Part(二)
- 护眼灯的标准是什么?护眼台灯国家标准给你答案
- UEFI启动流程浅析
- python爬虫之爬取起点中文网小说
- 如何在Bios里禁用集成显卡
- 搭建DNF台服之服务器篇
- java识别整段地址
热门文章
- Windows下Python,setuptools,pip,virtualenv的安装
- 性能测试场景设计--混合业务场景下的脚本比例控制
- Linux程序员必读:中文化与GB18030标准
- 《移动平台应用开发实践》教学进程(12周)
- LinuxDay19——加密与安全(2)
- sklearn10-使用总结
- 图片报错,显示默认图片
- Injection with CDI (Part I)
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- 成为Java高手的25个学习目标