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买卖股票的最佳时机 系列总结相关推荐

  1. LeetCode买卖股票的最佳时机系列总结

    LeetCode买卖股票的最佳时机系列总结 此类动态规划从二维动规理解后优化到一维动规,部分题目还可以用到贪心. 目录: 121 买卖股票的最佳时机1 122 买卖股票的最佳时机2 123 买卖股票的 ...

  2. 买卖股票的最佳时机系列

    买卖股票的最佳时机系列 1. 概述 2. dp 数组定义为状态 2.1 买卖股票的最佳时机 2.2 买卖股票的最佳时机 II 2.3 最佳买卖股票时机含冷冻期 2.4 买卖股票的最佳时机含手续费 3. ...

  3. LeetCode 买卖股票的最佳时机 - 超详细讲解系列题

    1.分析 使用通用方法,也即动态规划DP (1)LeetCode 121. 买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) { ...

  4. Leetcode刷题笔记 714. 买卖股票的最佳时机含手续费

    714. 买卖股票的最佳时机含手续费 时间:2020年12月17日 知识点:动态规划 题目链接:https://leetcode-cn.com/problems/best-time-to-buy-an ...

  5. [LeetCode刷题笔记]714 - 买卖股票的最佳时机含手续费(C++/Python3/Java/动态规划/贪心)

    一.题目描述 给定一个整数数组 prices 和 整数 fee ,其中 prices[i] 表示第 i 天的股票价格,fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付 ...

  6. 【2021/5/17 刷题笔记】买卖股票的最佳时机与动态规划

    文章目录 买卖股票的最佳时机 [题目] [我的方法] 执行结果: 动态规划算法 1.状态定义 2.设置数组边界值 3.推导状态转换方程. 参考代码 执行结果: 复杂度分析: 时间复杂度 空间复杂度 * ...

  7. Leetcode 买卖股票的最佳时机

    买卖股票的最佳时机 题目描述: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖 ...

  8. “买卖股票的最佳时机” 系列——我来教你稳赚不亏~

    目录 前言 一.买卖股票的最佳时机 -->指定次数交易(1次) 1.1.dp定义 1.2.递推公式 1.3.遍历顺序 1.4.初始化 1.5.解题代码 二.买卖股票的最佳时机II -->交 ...

  9. 【dp】买卖股票的最佳时机系列题目

    文章目录 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机 II 309. 最佳买卖股票时机含冷冻期 123. 买卖股票的最佳时机 III 188. 买卖股票的最佳时机 IV 121. 买卖 ...

  10. LeetCode 买卖股票的最佳时机 6道题1个解法总结

    一个方法解决6道买卖股票题:来自LeetCode题解 一.穷举框架 利用「状态」进行穷举.我们具体到每一天,看看总共有几种可能的「状态」,再找出每个「状态」对应的「选择」.我们要穷举所有「状态」,穷举 ...

最新文章

  1. 大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)
  2. python实现8大排序算法
  3. 黑猿大叔-译文 | TensorFlow实现Batch Normalization
  4. Python标准库参考-sched
  5. css两列显示,div+css如何控制信息分两列显示?
  6. 互联网金融数据分析-笔记
  7. Bailian4129 变换的迷宫【BFS】
  8. 使用钢片刷锡膏的一种解决方案
  9. 【Java】俄罗斯方块带背景音乐
  10. java 发 腾讯企业邮_JAVA使用腾讯企业邮箱发送邮件时报错Could not connect to SMTP host...
  11. 共模干扰和差模干扰的理解
  12. 单片机AC220V过零检测电路仿真及改进仿真
  13. 数据库mysql的基本操作命令(全)
  14. 计算Fisher信息之Part(二)
  15. 护眼灯的标准是什么?护眼台灯国家标准给你答案
  16. UEFI启动流程浅析
  17. python爬虫之爬取起点中文网小说
  18. 如何在Bios里禁用集成显卡
  19. 搭建DNF台服之服务器篇
  20. java识别整段地址

热门文章

  1. Windows下Python,setuptools,pip,virtualenv的安装
  2. 性能测试场景设计--混合业务场景下的脚本比例控制
  3. Linux程序员必读:中文化与GB18030标准
  4. 《移动平台应用开发实践》教学进程(12周)
  5. LinuxDay19——加密与安全(2)
  6. sklearn10-使用总结
  7. 图片报错,显示默认图片
  8. Injection with CDI (Part I)
  9. Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
  10. 成为Java高手的25个学习目标