博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 121 买卖股票的最佳时机 和 LeetCode 122 买卖股票的最佳时机2 C语言
阅读量:4141 次
发布时间:2019-05-25

本文共 1733 字,大约阅读时间需要 5 分钟。

文章目录

121 买卖股票的最佳时机

题目

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

解析

  • 该题的关键是前面的数要比后面的数小,找到差值的最大值并返回
  • 运用一层循环,我们在寻找最小值的同时,将每个数与后面数的差值计算并比较,存入差值最大的
  • 如果录入的是空数组,则直接返回0

代码

int maxProfit(int* prices, int pricesSize){
int max = 0, i = 0, min = prices[0]; if(pricesSize == 0) {
return 0; } while(pricesSize--) {
if(prices[i] < min) {
min = prices[i]; } if(prices[i] - min > max) {
max = prices[i] - min; } i++; } return max;}

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。

解析

  • 同1,这道题我们需要先买入股票才能卖出,且卖出后才能购入
  • 同样是一层循环,如果该元素比下一个元素小,则计算他们的差值,差值会一直叠加到遍历结束
  • 注意:因为我们要比较的是该元素与下一元素的大小,故循环size-1次即可
  • 如果录入的是空数组,则直接返回0

代码

int maxProfit(int* prices, int pricesSize){
int money = 0, i = 0; if(pricesSize == 0) {
return 0; } pricesSize -= 1; while(pricesSize--) {
if(prices[i] < prices[i + 1]) {
money += (prices[i + 1] - prices[i]); } i++; } return money;}

转载地址:http://wzkti.baihongyu.com/

你可能感兴趣的文章
oracle建立表空间
查看>>
oracle分区表的性能提升
查看>>
"Cannot allocate memory" OutofMemory when call Ant to build Polish project in Tomcat
查看>>
dumpcap抓包(python)
查看>>
查看文件是否被其他进程访问
查看>>
字符编码详解
查看>>
python使用dpkt分析wireshak报文(Modbus规约)
查看>>
css中的IFC
查看>>
CentOS 6.5下 mysql用户root登录不了
查看>>
windows + tomcat 部署web服务 http 改为https访问方法
查看>>
Windows系统下Apache 服务器启动以及过程中产生问题的解决办法
查看>>
Oracle服务说明
查看>>
异常收集(三):Missing artifact com.oracle:ojdbc6:jar:1.0 两种解决方案
查看>>
异常收集(四):Plugin execution not covered by lifecycle configuration
查看>>
异常收集(五):Io 异常: The Network Adapter could not establish the connection
查看>>
JSP中的转义字符
查看>>
SQLException: The user specified as a definer ('root'@'%') does not exist
查看>>
Linux 操作指令收集
查看>>
CentOS 7下卸载MySQL方式(转)
查看>>
CentOS7 安装MySQL 5.6.43
查看>>