121. 买卖股票的最佳时机

  • 1 题目描述
  • 2 示例描述
    • 2.1 示例1
    • 2.2 示例2
  • 3 解题提示
  • 4 解题思路
  • 5 暴力代码(超时)
  • 6 解答代码

1 题目描述

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

2 示例描述

2.1 示例1

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

2.2 示例2

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

3 解题提示

1 <= prices.length <= 10^5
0 <= prices[i] <= 10^4

4 解题思路

暴力的思路就不多加赘述了,很简单也很好理解。
简单说一下第二个代码块的代码思路,首先买股票是低价买高价出,那就把时间段分成两段,前一段找最小值,后一段找最大值,即可完成一次遍历,得到差值最大的结果。

5 暴力代码(超时)

class Solution {public:int maxProfit(vector<int>& prices) {int res = 0 ;int n = prices.size() ;for ( int i = 0 ;i < n - 1 ; i ++ ){for ( int j = i + 1 ; j < n ;j ++ ){res = max(res , prices[j] - prices[i]);}}return res ;}
};

6 解答代码

class Solution {public:int maxProfit(vector<int>& prices) {int minPrice = prices[0] ;int res = 0;int n = prices.size() ;for ( int i = 1; i < n ; i ++ ) {minPrice = min( minPrice , prices[i] );res = max(res, prices[i] - minPrice);}return res;}
};

【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. LeetCode: 121. 买卖股票的最佳时机(C++)

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

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

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

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

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

最新文章

  1. 一个低级错误引发Netty编码解码中文异常
  2. STM32F030控制LED
  3. 参会全攻略 | 倒计时 7 天!30+ 位重量级嘉宾“聊”什么?
  4. JUnit+JMockit单元测试
  5. 类模板 重载运算符 易错
  6. apache poi_将HTML转换为Apache POI的RichTextString
  7. 弹窗页面交互_UI进阶知识-信息提交类弹窗该如何设计?
  8. Linux设备驱动模型3——platform平台总线工作原理
  9. 蒋步星:轻量级大数据计算引擎
  10. ubuntu16 install sogou input
  11. 如何使用移动端后台管理数据
  12. ArcGIS_一种简单的三维城市建模方法
  13. SpringCloud系列——Eureka中Region和Zone概念介绍
  14. NVIDIA显卡驱动程序更新失败解决记录
  15. matlab解方java_如何在MATLAB中获得该方程的所有解?
  16. # 书籍《银河帝国3:第二基地》读后感-20211018
  17. R设置默认语言为英文的方法
  18. 甘特图模板--项目管理模板
  19. 观美剧《傲骨之战》,了解诉讼融资行业现状
  20. 魔兽插件是用php吗,【图片】手把手教你制作自己的界面【魔兽插件吧】_百度贴吧...

热门文章

  1. 服务器网站被cc攻击怎么办,网站被cc攻击了怎么办
  2. 卢本伟是谁及他为什么牛逼
  3. mysql授权远程登录
  4. ReentrantLock介绍
  5. div居中方法(共8种)
  6. 百度的“平台型AI”野望——从百度智能云的新战略、新架构说起
  7. 阿里巴巴周畅:认知与推荐系统
  8. 刚来深圳,正在找工作中...........
  9. 《WAP》团队第三次作业--团队项目的原型设计与开发
  10. 百度Apollo7.0中的路由段是什么