第一题

题目描述:

    给定一段时间内每天的股票价格,已知你只可以买卖各一次,求最大的收益。

输入输出样例: 
    输入一个一维整数数组,表示每天的股票价格;输出一个整数,表示最大的收益。

Input:[7,1,5,3,6,4]
Output:5

    在这个样例中,最大的利润为在第二天价格为 1 时买入,在第五天价格为 6 时卖出。

题解: 
    我们可以遍历一遍数组,在每一个位置 i 时,记录 i 位置之前所有价格中的最低价格,然后 将当前的价格作为售出价格,查看当前收益是不是最大收益即可。

int maxProfit(vector<int>& prices) {int sell = 0, buy = INT_MIN;for (int i = 0; i < prices.size(); ++i) {buy = max(buy, -prices[i]);sell = max(sell, buy + prices[i]);}return sell;
}

第二题

题目描述: 
    给定一段时间内每天的股票价格,已知你只可以买卖各 k 次,且每次只能拥有一支股票,求 最大的收益。

输入输出样例: 
    输入一个一维整数数组,表示每天的股票价格;以及一个整数,表示可以买卖的次数 k。输 出一个整数,表示最大的收益。

Input: [3,2,6,5,0,3], k = 2
Output:7

    在这个样例中,最大的利润为在第二天价格为 2 时买入,在第三天价格为 6 时卖出;再在第 五天价格为 0 时买入,在第六天价格为 3 时卖出。

题解: 
    如果 k 大约总天数,那么我们一旦发现可以赚钱就进行买卖。如果 k 小于总天数,我们可以 建立两个动态规划数组 buy 和 sell,对于每天的股票价格,buy[j] 表示在第 j 次买入时的最大收 益,sell[j] 表示在第 j 次卖出时的最大收益。

// 主函数int maxProfit(int k, vector<int>& prices) {int days = prices.size();if (days < 2) {return 0;}if (k >= days) {return maxProfitUnlimited(prices);}vector<int> buy(k + 1, INT_MIN), sell(k + 1, 0);for (int i = 0; i < days; ++i) {for (int j = 1; j <= k; ++j) {buy[j] = max(buy[j], sell[j-1] - prices[i]);sell[j] = max(sell[j], buy[j] + prices[i]);} }return sell[k];
}
// 辅函数
int maxProfitUnlimited(vector<int> prices) {int maxProfit = 0;for (int i = 1; i < prices.size(); ++i) {if (prices[i] > prices[i-1]) {maxProfit += prices[i] - prices[i-1];
} }return maxProfit;
}

Swift 编程语言版本

func maxProfit(_ prices: [Int]) -> Int {calculateProfit(prices, 0)
}func calculateProfit(_ prices: [Int], _ index: Int) -> Int {if index >= prices.count {return 0}var max = 0for i in 0..<prices.count {var maxProfit = 0for j in i+1..<prices.count {if prices[i] < prices[j] {let curProfit = prices[j] - prices[i] + calculateProfit(prices, i + 1)if curProfit > maxProfit {maxProfit = curProfit}}}if maxProfit > max {max = maxProfit}}return max
}

欢迎关注【无量测试之道】公众号,回复【领取资源】
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、

资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。

备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

 添加关注,让我们一起共同成长!

算法计算出股票最佳交易时间点相关推荐

  1. 算法:买卖股票的最佳时机含冷冻期

    题目描述 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 .​设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交 ...

  2. 用聚类算法计算股票的支撑位和阻力位

    本文将向您展示如何使用不同的聚类算法计算股票支撑位和阻力位. 股票数据 - 我在 mongoDB 数据库中有股票数据.您还可以免费从雅虎财经获取这些数据. Python 连接 MongoDB 设置 I ...

  3. 利用Remes算法计算最佳一致逼近多项式

    虽然Chebyshev定理从理论上给出了最佳一致逼近的特征性质,但在一般情况下,求最佳一致逼近多项式是困难的,通常只能做近似计算.本文主要介绍Remes算法的利用C++编制的具体程序. #includ ...

  4. 问题描述 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底

    问题描述 给定一个由n行数字组成的数字三角形如下图所示.试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径 ...

  5. python计算n阶乘中尾部零的个数_(Java)设计一个算法,计算出n阶乘中尾部零的个数...

    展开全部 long 类型对大数阶乘来e68a8462616964757a686964616f31333365633963说存储范围大小,强行使用会溢出,可以使用 BigDecimal. 代码如下:im ...

  6. 在一个请求分页系统中,假定系统分配给一个作业的物理块数为 3,并且此作业的页面走向为 2、3、2、1、5、2、4、5、3、2、5、2。试用 FIFO和 LRU 两种算法分别计算出程序访问过程中所发生

    页面置换算法 题目: 在一个请求分页系统中,假定系统分配给一个作业的物理块数为 3,并且此作业的页面走向为 2.3.2.1.5.2.4.5.3.2.5.2.试用 FIFO和 LRU 两种算法分别计算出 ...

  7. 程序基本算法习题解析 设计一个算法,计算男女运动员最佳配对方案,使各组男女双方竞赛优势的总和达到最大。

    题目: 羽毛球队有男女运动员各n人.给定2个n*n矩阵P和Q.P[i][j]是男运动员i和女运动员j,配对组成混合双打的男运动员竞赛优势,Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势. ...

  8. Python(分治算法)问题 G: 剪绳子_有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。

    问题 E: 解方程 题目描述 有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子, 你可以对N根绳子进行任意裁剪(不能拼接), 请你帮忙计算出这M根绳子最长的长度是多少. 输入 第一行包含2个正 ...

  9. MapReduce算法(计算出10月1日这天全天停运的车辆,)

    需求 :计算出10月1日这天全天停运的车辆 package CzC.demo03;import CzC.demo02.TaxiCsDriver; import org.apache.hadoop.co ...

最新文章

  1. mysql pdo使用存储过程_PDO调用存储过程的问题
  2. SDUT2608(Alice and Bob)
  3. 技术系列课|从0到1 构建实时音视频引擎
  4. C++中class与struct的区别
  5. 【SQLAlchemy】简单整理filter和filter_by的区别
  6. python wx提示框字体_使用wxStyledTextCtrl实现代码提示
  7. vue 执行函数this_在vue中使用回调函数,this调用无效的解决
  8. php常用分页类,php 分页类(整理)
  9. SQL中的ROW_NUMBER()和while循环对每一行执行操作
  10. C#时间判断的循环刻度判断
  11. 如何手动添加或者修改海威康视摄像头IP地址的方法
  12. 2018年统计用区划代码和城乡划分代码
  13. mdf2iso linux,MDF to ISO下载
  14. 基于FPGA的篮球计分器
  15. 钉钉的微应用如何测试;
  16. TouchDesigner处理串口数据
  17. python 折线图 excel_如何使用python读取excel数据并绘制折线图
  18. 无法找到元素 ‘aop:aspectj-autoproxy‘ 的声明
  19. excel隔行填充颜色的三种方法
  20. MySQl安装与学习,内附SQlyog

热门文章

  1. 解决win10应用程序图标丢失问题
  2. 循环机换变速箱油教程_多年老师傅教你如何正确的换自动变速箱油?
  3. python逻辑回归识别猫(持续更新中)
  4. 跟我学SharePoint 2013视频培训课程—— 版本控制以及内容审批(14)
  5. 选型宝访谈:什么是真正敏捷的企业协作平台?
  6. 深入计算机组成原理(二十二)冒险和预测(一):hazard是“危”也是“机”
  7. Unity Layout相关组件的使用,LayoutElement为主
  8. 探索PostgreSQL 14新特性--SEARCH和CYCLE
  9. VS2019 VC++ MFC CEF(Chrome)开发环境搭建及相关功能demo(附源码)
  10. 联想G50-75M 拆解(含视频链接),加内存加硬盘CPU加硅脂