leetcode 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 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 思考分析相关推荐
- Leetcode 122.买卖股票的最佳时机II
Time: 20190904 Type: Easy 考察:动态规划 题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完 ...
- Leetcode 122.买卖股票的最佳时机 II (每日一题 20210618)
给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票).注意:你不能同时参与多 ...
- leetcode 122. 买卖股票的最佳时机 II(贪心算法)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...
- LeetCode 122 买卖股票的最佳时机 II
题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一 支股票).注意:你不能同时参与多笔交易(你必 ...
- leetcode 122. 买卖股票的最佳时机 II
难度:中等 频次:35 题目: 给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格. 在每一天,你可能会决定购买和/或出售股票.你在任何时候 最多 只能持有 一股 股票. ...
- 106. Leetcode 122. 买卖股票的最佳时机 II (动态规划-股票交易)
步骤一.确定状态: 确定dp数组及下标含义 dp[i]是一个长度为len(prices)的一维数组,表示的是在第i天持有股票 步骤二.推断状态方程: 第i天持有股票,即dp[i][1], 那么两个状态 ...
- leetcode 122 买卖股票的最佳时机II
贪心算法:如果今天买明天能够盈利,那就今天买入明天卖出:对于这个问题来讲是具有最优子结构性质的 分情况: 1)当len<1:不会赚钱,return 0: 2) class Solution { ...
- Leetcode 122. 买卖股票的最佳时机 II 解题思路及C++实现
解题思路: 采用贪心策略,只要后一天的价格高于前一天,就将差价加进来.得到的结果就是能获取的最大利润. class Solution { public:int maxProfit(vector< ...
- 159. Leetcode 122. 买卖股票的最佳时机 II (贪心算法-股票题目)
class Solution:def maxProfit(self, prices: List[int]) -> int:result = 0for i in range(1,len(price ...
最新文章
- 快速多尺度人脸检测2--Multi-Scale Fully Convolutional Network for Face Detection in the Wild
- pip安装lxml报错
- boot spring test 文档_Spring、Spring Boot 和 TestNG 测试指南 ( 3 )
- 2021知识类内容研究报告
- 编译分析:提memcmp.c+gcc四十米大刀到C#世界中屠龙
- [ML]熵、KL散度、信息增益、互信息-学习笔记
- 8 月社群专属福利活动开启!进群免费领取开发视频课程!
- 低代码--低代码开发(LCDP)介绍
- 用纯前端表格控件SpreadJS,搭建上海泛微协同OA管理平台
- python写文件byte_如何将bytelist写入Python文件?
- pdf覆盖图片 Java_Java 添加、替换、删除PDF中的图片
- 学习java第15天
- javascript打飞机程序8x8x飞机大战
- Redis-有序集合(Zset)数据结构
- 百度提前批-面试凉凉之-梯度下降
- 大数据与云计算技术---(一)hadoop大数据平台
- 移动端h5页面打开高德地图或者百度地图实现导航
- 计算机面试专业英语词汇,面试常用英语,英语面试常用词汇?
- split分割字符串(按两种符号分割)
- Day【10】相交链表
热门文章
- antd table排序 vue_商品品牌业务之Vue编写前端页面
- javaScript学习笔记之类型转换
- react常用知识点总结
- uni-app 组件中的canvas转化为图片报错:errMsg:“canvasToTempFilePath:fail canvas is empty”
- 一个基于Bmob的OPPO锁屏壁纸小程序,写过之后发现...好像没什么卵用...一脸懵逼
- 发个自己的CSS重置基础代码
- Nginx 使用try_files遇到的问题
- CSS基础学习-15-1.CSS 浏览器内核
- mysql 字符串类型 char varchar
- 如何部署Zabbix服务端