Java 给定一系列的时间和销售价格,找出最佳的买卖时间,以实现利润最大化

Java 给定一系列的时间和销售价格,找出最佳的买卖时间,以实现利润最大化,java,arrays,maximum-profit-problem,Java,Arrays,Maximum Profit Problem,给定[(02:00,7.5),(03:30,7.9),(04:00,8.0),(05:30,6.8),(10:00,9.01)]次和销售价格,我们需要找到最佳的买卖时间,以实现利润最大化。 //时间在增加 //样本输出:05:30买入,10:00卖出,获利2.21 我已经写了找到最大利润的逻辑,但我也需要找到最佳的买卖时间,所以我有点被困在那里 double profit(double prices[]) { double maxprofit=0; for(int i=0

给定[(02:00,7.5),(03:30,7.9),(04:00,8.0),(05:30,6.8),(10:00,9.01)]次和销售价格,我们需要找到最佳的买卖时间,以实现利润最大化。 //时间在增加 //样本输出:05:30买入,10:00卖出,获利2.21

我已经写了找到最大利润的逻辑,但我也需要找到最佳的买卖时间,所以我有点被困在那里

double profit(double prices[])
  {
     double maxprofit=0;

    for(int i=0;i<price.length;i++)
    {
    double min= values[i];
    for(int j=i+1;j<price.length;j++)
    {
      if(price[j]<price[min])
      min=values[min];

    }
    profit=values[i]-min;
    if(maxprofit<profit)
    maxprofit=profit;
else
continue;
}
双倍利润(双倍价格[])
{
双倍最大利润=0;

对于(inti=0;i不需要使用嵌套循环,有一个线性时间算法可以解决这个问题

对算法有非常详细的解释

以下是修复代码的方法:

public double maxProfit(double[] prices) {

    if (prices.length <= 1) return 0;

    double minPrice = prices[0];
    double maxSoFar = Integer.MIN_VALUE;
    double profitSoFar = Integer.MIN_VALUE;

    for (int i = 1; i < prices.length; i++){
        profitSoFar = prices[i] - minPrice;
        minPrice = Math.min(minPrice, prices[i]);
        maxSoFar = Math.max(profitSoFar, maxSoFar);

    }

    return Math.max(maxSoFar, 0);
}
公共双最大利润(双[]价格){

如果(prices.length您遇到了什么问题?您尝试了什么?这不是代码编写服务,而是针对特定的代码相关问题。很抱歉,我将更新有问题的代码…thaks感谢您的帮助Daniel,这非常有帮助:)可能是[SellingPoint][1]的副本,请在此处检查我的代码和答案。[1]: