目录

  • 题目
  • 贪心法

题目

给定一个数组,它的第 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 376. 摆动序列 思考分析
然后试着将三个示例画出波动图:
发现答案都符合一个特征:
结果 = 每个上坡阶段的坡顶与坡底的差值之和,也就是图中橘色部分表示。后来感觉这个写比较麻烦,于是想到简化一下,也就是品红色的方法。
可以发现,对于每个上坡,坡顶与坡底的差值等于上坡阶段中每一个子差之和。

这样代码就好写很多了:

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

//TODO
之后复习到动态规划再写动态规划的方法。

leetcode 122. 买卖股票的最佳时机 II 思考分析相关推荐

  1. Leetcode 122.买卖股票的最佳时机II

    Time: 20190904 Type: Easy 考察:动态规划 题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完 ...

  2. Leetcode 122.买卖股票的最佳时机 II (每日一题 20210618)

    给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票).注意:你不能同时参与多 ...

  3. leetcode 122. 买卖股票的最佳时机 II(贪心算法)

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...

  4. LeetCode 122 买卖股票的最佳时机 II

    题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一 支股票).注意:你不能同时参与多笔交易(你必 ...

  5. leetcode 122. 买卖股票的最佳时机 II

    难度:中等 频次:35 题目: 给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格. 在每一天,你可能会决定购买和/或出售股票.你在任何时候 最多 只能持有 一股 股票. ...

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

    步骤一.确定状态: 确定dp数组及下标含义 dp[i]是一个长度为len(prices)的一维数组,表示的是在第i天持有股票 步骤二.推断状态方程: 第i天持有股票,即dp[i][1], 那么两个状态 ...

  7. leetcode 122 买卖股票的最佳时机II

    贪心算法:如果今天买明天能够盈利,那就今天买入明天卖出:对于这个问题来讲是具有最优子结构性质的 分情况: 1)当len<1:不会赚钱,return 0: 2) class Solution { ...

  8. Leetcode 122. 买卖股票的最佳时机 II 解题思路及C++实现

    解题思路: 采用贪心策略,只要后一天的价格高于前一天,就将差价加进来.得到的结果就是能获取的最大利润. class Solution { public:int maxProfit(vector< ...

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

    class Solution:def maxProfit(self, prices: List[int]) -> int:result = 0for i in range(1,len(price ...

最新文章

  1. 快速多尺度人脸检测2--Multi-Scale Fully Convolutional Network for Face Detection in the Wild
  2. pip安装lxml报错
  3. boot spring test 文档_Spring、Spring Boot 和 TestNG 测试指南 ( 3 )
  4. 2021知识类内容研究报告
  5. 编译分析:提memcmp.c+gcc四十米大刀到C#世界中屠龙
  6. [ML]熵、KL散度、信息增益、互信息-学习笔记
  7. 8 月社群专属福利活动开启!进群免费领取开发视频课程!
  8. 低代码--低代码开发(LCDP)介绍
  9. 用纯前端表格控件SpreadJS,搭建上海泛微协同OA管理平台
  10. python写文件byte_如何将bytelist写入Python文件?
  11. pdf覆盖图片 Java_Java 添加、替换、删除PDF中的图片
  12. 学习java第15天
  13. javascript打飞机程序8x8x飞机大战
  14. Redis-有序集合(Zset)数据结构
  15. 百度提前批-面试凉凉之-梯度下降
  16. 大数据与云计算技术---(一)hadoop大数据平台
  17. 移动端h5页面打开高德地图或者百度地图实现导航
  18. 计算机面试专业英语词汇,面试常用英语,英语面试常用词汇?
  19. split分割字符串(按两种符号分割)
  20. Day【10】相交链表

热门文章

  1. antd table排序 vue_商品品牌业务之Vue编写前端页面
  2. javaScript学习笔记之类型转换
  3. react常用知识点总结
  4. uni-app 组件中的canvas转化为图片报错:errMsg:“canvasToTempFilePath:fail canvas is empty”
  5. 一个基于Bmob的OPPO锁屏壁纸小程序,写过之后发现...好像没什么卵用...一脸懵逼
  6. 发个自己的CSS重置基础代码
  7. Nginx 使用try_files遇到的问题
  8. CSS基础学习-15-1.CSS 浏览器内核
  9. mysql 字符串类型 char varchar
  10. 如何部署Zabbix服务端