在LeetCode中有好几道股票的问题,我们后面学习动态规划还是再分析,现在先用基本的方法试一试。

1.买卖股票的最佳时机

假设你有一个数组,其中第i个元素是股票在第i 天的价格。 你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。 这个是有点难度的, 可以使用暴力法比较直接,贪心法比较好一些。 为啥可以用贪心呢?因为买必须在卖之前,因此每到一步都可以获取到这一步为止的最佳状态,不断这个最佳状态即可。

class Solution {/**** @param prices int整型vector* @return int整型*/int maxProfit([]prices) {// write code hereint minVal = prices[0], profit = 0;for (int i = 1; i < prices.size(); ++i) {if (prices[i] < minVal) minVal = prices[i];profit = max(profit, prices[i] - minVal);}return profit;}
}

2.股票交易的最大收益(无限次交易)

假定你知道某只股票每一天价格的变动。 你最多可以同时持有一只股票。但你可以无限次的交易(买进和卖出均无手续费)。 请设计一个函数,计算你所能获得的最大收益。

这个题目的模型就是下跌的时候不买不卖,收益为0,如果上涨就先卖再买。

public int maxProfit (int[] prices) {// write code hereint curr=prices[0];int benifit=0;for(int i=1;i<prices.length;i++){if(prices[i]>curr){benifit+=prices[i]-curr;curr=prices[i];}else{curr=prices[i];}}return benifit;}

3.股票交易的最大收益(交易2次)

这个问题在B站也有讲解的视频:https://www.bilibili.com/video/BV1To4y1d7TA/

这个题其实用动态规划的方法,先看看能否想明白:

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* 两次交易所能获得的最大收益* @param prices int整型一维数组 股票每一天的价格* @return int整型*/public int maxProfit (int[] prices) {// write code hereif (prices.length == 0) return 0;/*5个状态:1)不操作2)第一次购买3)第一次卖出4)第二次购买5)第二次卖出dp[i][j]代表第i天状态为j时产生的最大收益*/int [][]dp = new int[prices.length][5];//初始化dp[0][1] = -prices[0];dp[0][3] = -prices[0];for (int i = 1; i < prices.length; i++) {dp[i][0] = dp[i - 1][0];//其中dp[i][1]有两个操作1)第i天没有操作2)第i天买入股票,所以此时最大收益,应该为这两个操作比大小dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);//其中dp[i][2]有两个操作1)第i天没有操作2)第i天卖出股票,所以此时最大收益,应该为这两个操作比大小dp[i][2] = Math.max(dp[i - 1][2], dp[i - 1][1] + prices[i]);//其中dp[i][3]有两个操作1)第i天没有操作2)第i天买入股票,所以此时最大收益,应该为这两个操作比大小dp[i][3] = Math.max(dp[i - 1][3], dp[i - 1][2] - prices[i]);//其中dp[i][4]有两个操作1)第i天没有操作2)第i天卖出股票,所以此时最大收益,应该为这两个操作比大小dp[i][4] = Math.max(dp[i - 1][4], dp[i - 1][3] + prices[i]);}return dp[prices.length - 1][4];}
}

数字问题7:股票问题相关推荐

  1. js php 实时更新数字,js实现股票实时刷新数据案例

    近来学习炒股,免不了上班时间看盘,总不能光明正大的用电脑看行情,一直盯着手机影响也不好,容易引起"关注". 所以就想自己做一个网页来达到看盘的目的,一个只显示几个关键数字的网页肯定 ...

  2. leetcode(力扣)738. 单调递增的数字||714. 买卖股票的最佳时机含手续费

    738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strNum=to_string(n) ...

  3. _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树

    _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...

  4. Python数字货币量化初探

    很好的老师:邢不行 我的一篇文章:https://blog.csdn.net/bijingrui/article/details/107433993 小资金测试 + 实盘不能停! 目前来看, 高频交易 ...

  5. 如何获取股票外汇期货的实时行情数据和历史行情数据?

    支持如下产品: 外汇 国际期货 国内期货 国际金银 数字货币 股指期货 股票 美股 支持实时交易数据和历史交易数据 Tick行情是指按交易所实际发送的行情数据. Bar数据:1分.15分.60分的实时 ...

  6. 互联网金融基础知识--数字货币

    写在前面:认知创造价值 数字货币: 数字货币和股票的区别: [工作日]:股票在工作日工作时间才可交易,数字货币无任何限制 [交易时间]:股票当日买入不允许当日卖出最快第二天即T+1(如卖完跌了,今天也 ...

  7. “圈粉”行业龙头 数字人民币搅动投资江湖

    来源:中国证券报 数字人民币APP日前迎来更新,工.农.中.建.交.邮储六大国有银行项下均新增"顺丰""星星充电""石化金融"三个子钱包.值 ...

  8. 蒙特卡洛方法生成随机数_随机股票生成器—财务方面的蒙特卡洛模拟

    蒙特卡洛方法生成随机数 金融, 机器学习 (Finance, Machine Learning) In this article, I will focus on how to create a pr ...

  9. C#下利用开源NPlot绘制股票十字交叉线

    在数字货币或者股票看盘交易软件中,为了方便准确定位K线图中的时间和买卖点,都用到了用十字交叉线来定位买卖时间和买卖点.这里利用.Net下开源的NPlot图表插件,实现了跟着鼠标移动的十字定位交叉线,并 ...

  10. python财务报表分析-浅谈利用Python分析财报找到值得投资的好公司的想法

    17年12月份接触到了007战友林晓燕老师的不读财报不出局,才知道投资股票还有那么多门道,也了解到了MJ老师挑选股票的标准--五大关键数字力. 跟着林老师开始学习财报以来,老是觉得光靠人工来挑选符合& ...

最新文章

  1. ISP【三】———— raw读取、不同格式图片差异
  2. Kubernetes — kubectl 的基本使用
  3. pyrDown和pyrUp函数
  4. html元素一行显示不完收缩_这些常用的HTML标签,你还不知道吗?
  5. 用C++实现网络编程---抓取网络数据包的实现方法
  6. XML编程-DOM4J
  7. visio画图中怎么添加①
  8. 栈和堆(Stack Heap)
  9. c mysql linux,linux上C语言连接mysql
  10. 朴素贝叶斯-垃圾邮件(英文的)处理
  11. jQuery Mobile中链接(包含button和表单提交的链接)的data-*选项
  12. java 获取xml 版本号_java读取xml文件字段值
  13. 2021【第十二届蓝桥杯省赛】 C/C++ B组(第二场)
  14. unity中程序的延时
  15. stm32电容触摸按键实验
  16. R语言中常用的生物多样性指数的计算(Alpha,Beta,Gamma,功能多样性,系统发育多样性)
  17. linux Permission 0644 for are too open 错误解决方案
  18. CentOS防火墙配置(资源)
  19. .net NPOI读写Doc文件
  20. python from用法_python学习笔记1_import与from方法总结

热门文章

  1. 我对暴风影音的几点建议
  2. matlab绘图plot知识汇总
  3. css元素转换(旋转函数、rotateX 和 rotateY 的使用、移动函数、缩放函数、过渡、动画)详解
  4. JAVA中OOA、OOD、OOP概念
  5. excel制表基础:规范的制表理念和思路让效率提升 上篇
  6. Dagger的使用一
  7. Qt的时间控件类QDateTimeEdit,QTimeEdit,QDateEdit,QCalendarWidget
  8. powerdesigner如何进行安装
  9. hive load data inpath ‘‘ overwrite into 坑
  10. VS配置boost库