【动态规划】股票买入卖出点计算
给出一只股票的价格,要求给出最佳买入和卖出价格,使得收益最大。
示例:
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
分析:
题目的要求是要找到前面的某一个极小值,后面的一个极大值,使得极大值与极小值的差最大。问题解法有二:
其一,通过两次循环,暴力计算每个买入点和卖出点的差,计算最大值。
int[] values = new int[]{7, 1, 5, 3, 6, 4};
int profit = 0;
int buyDate = -1;
int sellDate = -1;for (int i = 0; i < values.length - 1; i++){for (int j = i+1; j < values.length; j++){if (values[j] - values[i] > profit){buyDate = i;sellDate = j;profit = values[j] - values[i];}}
}
其二,通过动态规划的方法,一次循环搞定最大利润的计算。
每个位置的最大利润我们用dp[i]表示,则dp[i] = max(price[i] - min, dp[i-1]);
如果我们只是计算最大利润,那么可以简化为dp[i] = max(price[i] - min, maxProfit)
int maxProfit = 0, min = Integer.MAX_VALUE;for(int i = 0; i < values.length; i++){if(values[i] < min)// 净值下降,只需要保存最新的极小值min = values[i];else if(values[i] - min > maxProfit)// 收益变大,更新最大收益maxProfit = values[i] - min;
}
解法一O(n^2), 解法二O(n),显然解法二更优。
【动态规划】股票买入卖出点计算相关推荐
- 漫画:程序教你寻找股票买入卖出的最佳时机(动态规划)
作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 前一段时间,我们介绍了一个经典算法题目:寻找股票买入卖出的最佳时机.这个题目看似简单,却有着许多种变化. 在上一篇中 ...
- 漫画:寻找股票买入卖出的最佳时机(动态规划)
前一段时间,我们介绍了一个经典算法题目:寻找股票买入卖出的最佳时机.这个题目看似简单,却有着许多种变化. 在上一篇中,我们讲解了最多1次买卖和无限次买卖的解法,那么,如果只允许最多2次股票买卖,如何寻 ...
- 股票买入卖出 LeetCode 变形题 度小满
度小满,股票买入卖出变种题. 最大化收益,最小化买卖次数. def stock():profit = 0length = len(trade)count = 0for i in range(lengt ...
- 漫画:寻找股票买入卖出的最佳时机
----- 第二天 ----- 什么意思呢?让我们来举个例子,给定如下数组: 该数组对应的股票涨跌曲线如下: 显然,从第2天价格为1的时候买入,从第5天价格为8的时候卖出,可以获得最大收益: 此时 ...
- 股票买入卖出问题 leetcode123(最多k次交易)
leetcode123 问题链接 https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/ 给定一些天数的股票价格list, ...
- 网易游戏面试--两次股票买入卖出的最大收益
第一问: 对于只有一次买入卖出的最大收益可以参照http://blog.csdn.net/calmreason/article/details/7904062,已经将的非常详细了 第二问: 当时做完这 ...
- LeetCode 121 Best Time to Buy and Sell Stock(股票买入卖出的最佳时间)
翻译 话说你有一个数组,其中第i个元素表示在第i天的股票价格.如果你被只被允许最多一次交易(例如,买入然后卖出一个股票),设计一个算法并找出最大利润. 原文 Say you have an array ...
- LeetCode 122 Best Time to Buy and Sell Stock II(股票买入卖出的最佳时间 II)
翻译 话说你有一个数组,其中第i个元素表示第i天的股票价格.设计一个算法以找到最大利润.你可以尽可能多的进行交易(例如,多次买入卖出股票).然而,你不能在同一时间来多次交易.(例如,你必须在下一次买入 ...
- 《港联证券》股票必须持仓多久才能卖?股票买入多久显示持仓?
有的新手股民在炒股的时候,对股票的了解是不多的,就会在网上搜索材料来进行学习,那么股票有必要持仓多久才干卖?股票买入多久显现持仓?港联证券为我们预备了相关内容,以供参阅. 股票有必要持仓多久才干卖? ...
最新文章
- apue第四章习题的一些拙见(不定时更新)
- Android4.1 触摸屏(TP)划线曲折、不圆润的解决办法
- 功能农业奠基人-农业大健康·万祥军:赵其国安康工作站揭牌
- Web前端面试指导(十八):用纯CSS创建一个三角形的原理是什么?
- java二维码生成_如何使用 Java 生成二维码?
- 浅谈物联网时代智能停车发展趋势
- oracle 字段全大写,Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)...
- 轮子来袭 vJine.Core Orm 之 01_快速体验
- AJPFX总结String类的特点
- vim 之cscope的使用
- 关于使用js的setAttribute和getAttribute取dom属性在ie ff safri下的问题
- 【BZOJ4049】【Cerc2014】 Mountainous landscape 【凸包】【线段树】
- JAVA解析字符串数学公式
- python 生存分析_用python教程进行生存分析何时何地
- 51单片机密码锁(含确认键、清零键、删除键)
- 100条信号完整性效应的经验法则
- SQL语句报错:1062, “Duplicate entry ‘XXX‘ for key ‘XXX‘
- 计算机通过镜子测试,人工智能通过镜子测试或许只是一个悖论
- QString::number()
- 基于SSM的智慧物业系统设计与实现