股票利润最大化(交易次数k)
2017-01-18 21:11
169 查看
Best Time to Buy and Sell Stock IV
问题描述:leetcode:188Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete at most k transactions.
Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
思路:
按照思路写的代码:
int maxProfit(int k, vector<int>& prices) { if(k==0||prices.size()<2){ return 0; } } int maxdiff = 0; vector<vector<int> > T(k+1, vector<int> (prices.size(), 0)); for(int i=1; i<k+1; i++){ maxdiff = T[i-1][0] - prices[0] ; for(int j=1; j<prices.size(); j++){ T[i][j] = max(T[i][j-1], maxdiff+prices[j]); maxdiff = max(maxdiff, T[i-1][j] - prices[j]); } } return T[k][prices.size()-1]; }
但是该代码运行时会报错:
也就是说当k=1000000000时会导致内存出错;所以可以优化代码,也就是当
k>prices.size()
时使用不限定交易次数时的算法(Best Time to Buy and Sell Stock II;leetcode122)
修改之后代码:
int maxProfit(int k, vector<int>& prices) { if(k==0||prices.size()<2){ return 0; } if(k>prices.size()){ int ans = 0; for(int i=1; i<prices.size(); i++){ if(prices[i]>prices[i-1]){ ans += (prices[i]-prices[i-1]); } } return ans; } int maxdiff = 0; vector<vector<int> > T(k+1, vector<int> (prices.size(), 0)); for(int i=1; i<k+1; i++){ maxdiff = T[i-1][0] - prices[0] ; for(int j=1; j<prices.size(); j++){ T[i][j] = max(T[i][j-1], maxdiff+prices[j]); maxdiff = max(maxdiff, T[i-1][j] - prices[j]); } } return T[k][prices.size()-1]; }
相关文章推荐
- LeetCode - 股票交易的最大利润
- 股票买卖之多次交易最大利润
- 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。
- 说你有一个数组,其中第i个元素是第i天给定股票的价格。设计一个算法来找到最大的利润,最多可以完成两个交易。
- leetcode_122. Best Time to Buy and Sell Stock II 多次买卖股票,求交易的最大利润
- 122. Best Time to Buy and Sell Stock II | 股票利润最大化
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 从钱龙数据中读取股票交易数据(日线)导入到数据库
- 股票的网上交易
- 量化交易----利用机器学习预测股票价格趋势
- [双语阅读]研究:无名指长更适合从事股票交易
- 爬取网易财经中股票的历史交易数据
- 面试题——股票利益最大化
- 股票最大利润
- 市场一定会帮助你获得利润的交易
- 给你一串股票价格,找出买点和卖点,使得利润最大
- 利用bs4和requests爬取股票历史交易数据
- Python数据分析与机器学习-贷款申请最大化利润
- [bzoj 1855][SCOI2010]股票交易