题目:

给定一个数组,它的第 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。

解答:

class Solution {
public:int maxProfit(vector<int>& prices) {if (prices.empty()) {return 0;}int profit = 0;int buy = prices[0];for (int i = 0; i < prices.size(); i++) {//截至第i天,买入的最低价格:第i-1天的价格与第i天的价格的最小值buy = min(buy, prices[i]);//截至第i天,获得的最大利润:第i-1天的利润与在第i天卖出得到的最大利润profit = max(profit, prices[i] - buy);}return profit;}
};

LeetCode: 121. 买卖股票的最佳时机(C++)相关推荐

  1. LeetCode #121 买卖股票的最佳时机 贪心 单调栈 动态规划

    LeetCode #121 买卖股票的最佳时机 题目描述 给定一个数组,它的第 iii 个元素是一支给定股票第 iii 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算 ...

  2. leetcode - 121.买卖股票的最佳时机

    121.买卖股票的最佳时机 ------------------------------------------ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成 ...

  3. LeetCode - 121. 买卖股票的最佳时机

    121. 买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) {if (prices == null || prices.leng ...

  4. LeetCode 121:买卖股票的最佳时机 思考分析

    题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润. 注意:你不能在买入股票 ...

  5. leetcode.121. 买卖股票的最佳时机(best-time-to-buy-and-sell-stock)

    文章目录 121. 买卖股票的最佳时机 代码与思路 暴力法 一次遍历 单调栈 122. 买卖股票的最佳时机 II 代码与思路 股票问题系列通解 121. 买卖股票的最佳时机 给定一个数组,它的第 i ...

  6. 105. Leetcode 121. 买卖股票的最佳时机 (动态规划-股票交易)

    给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票.设计一个算法来 ...

  7. leetcode 121. 买卖股票的最佳时机 (贪心 + 动规 + 双指针

    贪心的思路: 得到最小值,再挨个用数组中的值减去最小值,最终值取一个最大的 class Solution { public:int maxProfit(vector<int>& p ...

  8. 158. Leetcode 121. 买卖股票的最佳时机 (贪心算法-股票题目)

    class Solution:def maxProfit(self, prices: List[int]) -> int:low, max_profit = float("inf&qu ...

  9. LeetCode 121. 买卖股票的最佳时机(Best Time to Buy and Sell Stock)

    简单粗暴的第一种解法: class Solution { public:int maxProfit(vector<int>& prices) {int m = prices.siz ...

最新文章

  1. linux mysql运维_Linux运维常用的 MySQL基础命令
  2. 6、 restful API
  3. java synchronized关键字_Java:手把手教你全面学习神秘的Synchronized关键字
  4. 好程序员Web前端教程分享JavaScript开发技巧
  5. axure html 360安装扩展,小编搞定win7系统360浏览器添加Axure扩展的设置方案
  6. 手把手教我班小姐姐学java之多态
  7. TCP/IP协议损坏解决方法:
  8. 网络爬虫的基本原理(一)
  9. MatLab:数字图像处理实验
  10. imp导入dmp文件,过滤不想导入的表
  11. oracle 卸载清除,Oracle终极彻底卸载的完整步骤
  12. android课程设计健身,健身软件课程设计本科毕业设计论文.doc
  13. Spark HA高可用部署、基于文件系统单点恢复、基于zookeeper的Standby Master、如何恢复到上一次活着master挂掉之前的状态 03
  14. 【2022年对话机器人chatbot】SaleSmartly如何解决客服难题
  15. mw320r虚拟服务器,新版水星MW320R路由器设置教程 | 192路由网
  16. latency-nice优先级补丁源码分析
  17. 2021年山东大学程序设计精英挑战赛 真题
  18. Ubuntu18.04+ros-melodic (包括Ubuntu16.04+ros-kinetic)乐视奥比中光相机在nano、tx2、PC等设备上的安装与使用,并解决无法显示rgb信息的问题
  19. Lemur的检索过程
  20. 力软-获取jfGrid值,并改变值

热门文章

  1. 面试官:看你项目中用到了Hystrix,具体有什么用?
  2. python字符串转为日期datetime、date时间元组
  3. IQKeyboardManager 键盘管理工具(个性化设置)
  4. 计算机主机重启键,电脑重启快捷键是什么
  5. 用牛顿迭代法求方程的根matlab,牛顿迭代法求方程解 程序如下
  6. java实现踢下线用户_java中如何踢人下线?封禁某个账号后使其会话立即掉线!...
  7. 干货:复杂网络及其应用简介
  8. matlab怎么美化gui按钮,matlab中美化gui
  9. halcon里图像的交集补集反选
  10. megacli通过盘符定位物理盘_MegaCli使用