leetcode刷题:121题stock
题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0
分析:暴力法:
如下图:
对于一个给定的股票每日价格数组,给出进行红圈黑线两次遍历。然后将其差值存入一个新的数组中,求出这个数组中的最大值。
如下代码:
#include <iostream>
#include <vector>using namespace std;class Solution {
public:int maxProfit(vector<int>& prices) {vector<int> resultV;for(int i = 0;i<prices.size();i++){for(int j=i+1;j<prices.size();j++){resultV.push_back(prices[j]-prices[i]);}}int max = -999;for (auto v : resultV){if (max < v) max = v;}if(max <= 0)return 0;elsereturn max;}
};int main()
{Solution way;vector<int> v = {6,5,4,3,2,1};cout<<way.maxProfit(v)<<endl;return 0;
}
优化方法二:
假设给定的数组为:[7, 1, 5, 3, 6, 4]
如果我们在图表上绘制给定数组中的数字,我们将会得到:
我们来假设自己来购买股票。随着时间的推移,每天我们都可以选择出售股票与否。那么,假设在第 i 天,如果我们要在今天卖股票,那么我们能赚多少钱呢?
显然,如果我们真的在买卖股票,我们肯定会想:如果我是在历史最低点买的股票就好了!太好了,在题目中,我们只要用一个变量记录一个历史最低价格 minprice,我们就可以假设自己的股票是在那天买的。那么我们在第 i 天卖出股票能得到的利润就是 prices[i] - minprice。
因此,我们只需要遍历价格数组一遍,记录历史最低点,然后在每一天考虑这么一个问题:如果我是在历史最低点买进的,那么我今天卖出能赚多少钱?当考虑完所有天数之时,我们就得到了最好的答案。
代码如下
class Solution {
public:int maxProfit(vector<int>& prices) {int inf = 1e9;int minprice = inf, maxprofit = 0;for (int price: prices) {maxprofit = max(maxprofit, price - minprice);minprice = min(price, minprice);}return maxprofit;}
};
leetcode刷题:121题stock相关推荐
- 《LeetCode刷题》—121. 买卖股票的最佳时机
<LeetCode刷题>-121. 买卖股票的最佳时机 一.题目内容 原题连接:https://leetcode.cn/problems/best-time-to-buy-and-sell ...
- C#LeetCode刷题-动态规划
动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串 22.4% 中等 10 正则表达式匹配 18.8% 困难 32 最长有效括号 23.3% 困难 44 通配符匹配 17.7% 困难 53 最 ...
- C#LeetCode刷题-数组
数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...
- Leetcode刷题指南和top100题目
原文链接:https://blog.csdn.net/qq_39521554/article/details/79160815 参考博文:https://blog.csdn.net/mmc2015/a ...
- Leetcode-How-What 力扣Leetcode刷题指南
Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...
- C#LeetCode刷题-贪心算法
贪心算法篇 # 题名 刷题 通过率 难度 44 通配符匹配 17.8% 困难 45 跳跃游戏 II 25.5% 困难 55 跳跃游戏 30.6% 中等 122 买卖股票的最佳时机 II C#LeetC ...
- LeetCode刷题笔记汇总
LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...
- LeetCode刷题之T46全排列(中等)
大家好,这次我们讲解的题目是LeetCode刷题之T46全排列(中等),话不多说,上题: 解题思路: 这道题的要用到回溯算法,而解决每一个回溯问题,实际上就是一个决策树的问题,不明白的话,我举个例子: ...
- LeetCode 刷题之路(python版)
摘自:https://blog.csdn.net/qq_32384313/article/details/90745354 LeetCode 刷题之路(python版) 小坏wz 2019-06-02 ...
- 个人LeetCode刷题记录(带题目链接及解答)持续更新
Leetcode 刷题 注:~[完成]代表还有一些方法没看,最后再看 一.一些需要重刷的典型题: 1.快速排序,归并排序,堆排序(递归的思想) 2.链表中的回文链表,其中的快慢指针,多看,多练 3.链 ...
最新文章
- loglevel python 不输出_Python 通过 Celery 框架实现分布式任务队列!
- 杨老师的新课!数学应用
- JAVA面试题(part2)--位运算符
- 福利 | 全网疯传免费领,一整套算法课程,拿走不谢!
- 为什么总是有人说Java啰嗦,却没人说C++啰嗦?
- bilibili有电脑版吗_哪个手机便签软件有电脑版?有跨平台的桌面便签软件吗 - 学显...
- mysql主主同步修复
- SpringMVC 中整合JSON、XML视图二
- JSF学习笔记--JSF简介,JSF第一个应用程序
- 工业机器人综合教学实训平台
- 台式计算机装机软件选择,装机软件哪个好?小编教你最好的装机软件推荐
- unity游戏开发之游戏过审后 国行PS4将在3月20日发售
- 鸡汤来喽游戏制作C++(demo版)
- ubuntu下使用netplan配置网络
- Git项目库删除找回
- 验证码图片显示不出文字
- 沈阳警方严查违法非法烟花爆竹 捣毁多处储存窝点
- 有创意的思维导图是怎样绘制的
- 怎样用html和图像制作代码,如何用HTML代码贴图
- 中文之星掌上狂拼手机输入法 v1.0 symbian版 绿色
热门文章
- thinkphp5.0验证码使用
- 基于Monte Carlo方法的2048 A.I.
- Salesforce 中获取数据表字段的 picklist 的值
- DriverMessageBean配置详解
- 利尔达e95蓝牙模块程序_Arduino使用HC05蓝牙模块与手机连接
- pareto解是什么意思_Pareto是什么意思
- VUE---不连接后端的登录验证规则方法
- Python批量转换ppt文件为pptx文件
- python爬虫什么结构好_python爬虫入门:爬虫基础了解一下 !! 盘它
- 什么是函数模板以及什么是类模板