美文网首页
买卖收益最大(未完成)

买卖收益最大(未完成)

作者: Robin92 | 来源:发表于2019-10-18 09:53 被阅读0次

给定比特币n天内的价格表,完成一个算法计算你通过买卖能获得的最大收益。要求考虑执行效率。

(你不能在第一次买入前卖出,而且一次买或者卖只能是一份,买卖次数不限,但你必须在再次购买前卖掉之前买入的比特币。)

a. 请写出编程思路

b. 请编码实现

举例:

价格表: [5,3,1,5,4,7,8,6]

输出: 8

解释: 第3天(价格1)买,第4天(价格5)卖, 收益4 ;然后第5天(价格4)买,第7天(价格8)的时候卖出, 收益4 ;总共收益8。

思路:

状态

有 买入(buy) 和 卖出(sell) 这两种状态。

转移方程

当天买的话意味着损失-prices[i],当天卖的话意味着增加prices[i],当天卖出总的收益就是 buy+prices[i]

可以有无限次的买入和卖出,也就是说买入状态之前可拥有卖出状态,所以转移方程:

buy = max(buy, sell - price[i])

sell = max(sell, buy + prices[i] )

边界

第一天 buy = -prices[0], sell = 0,最后返回 sell 即可。

实现:

public int maxProfit(int[] prices) {

        if (prices.length <= 1)

            return 0;

        int buy = -prices[0], sell = 0;

        for (int i = 1; i < prices.length; i++) {

            buy = Math.max(buy, -prices[i]);

            sell = Math.max(sell, prices[i] + buy);

        }

        return sell;

    }

相关文章

  • 买卖收益最大(未完成)

    给定比特币n天内的价格表,完成一个算法计算你通过买卖能获得的最大收益。要求考虑执行效率。 (你不能在第一次买入前卖...

  • 4、动态或贪心

    1、买卖股票的最佳时机—* 根据股价手势数组,计算出最大收益,只能交易一次。如[7,1,5,3,6,4],第2天买...

  • 最大收益

    题目描述:假设您有一个数组,其中第i个元素是第i天给定股票的价格。设计一个算法来找到最大的利润。您可以根据需要完成...

  • 研报 | 丝滑均线(下)

    书接前文,反穿均线会怎样呢? 均线反穿胜率高些,收益为负,最大回撤也高些。但买卖点多是低吸高抛。这个特...

  • 收益最大化的基金定投方法,终于找到答案了

    之前,写过一篇文章,《定投的基金何时调仓何时买卖,终于找到答案了》,经过不断地摸索学习实践,它的姊妹篇《收益最大化...

  • 股票分红

    股票收益=买卖价差+股票分红 股票的收益率由两个部分组成,股价变动带来的收益和股票分红带来的收益。这也就是我们平时...

  • 新三板,股权交易

    一个是买卖股票,一个是买卖股权,做原始股东,收益立竿见影。有朋友在做吗?

  • 什么是股票收益?买取股票能获得哪些收益?(10日2月2017年)

    股票市值与股票价值是一个概念吗?什么是股票收益?买取股票能获得哪些收益? 股票收益即股票投资收益,是指通过买卖股票...

  • 深圳某互联网证券面试题:双指针的使用

    背景 面试深圳某互联网证券公司,算法题是给一个固定时间区间的股票价格,找出最佳买卖时机,使得收益最大,其中一天只能...

  • 求最大收益

    题目:知道一段时间内股价的走势,求一个买入卖出,获取的收益最大。 思路:碰到时间段n+1>n的,说明股市向上涨,则...

网友评论

      本文标题:买卖收益最大(未完成)

      本文链接:https://www.haomeiwen.com/subject/rutimctx.html