用java解决股市难题,实现利润最大化

用java解决股市难题,实现利润最大化,java,algorithm,Java,Algorithm,需要最大利润 如果我只能买一次,卖一次,我可以修改什么以获得最大利润? 也就是说,如果我以5英镑买入,以150英镑卖出,那么它的最大利润是多少 目前我所做的是当价格低于第二天时买入,如果价格高于第二天时卖出 显然,我们必须记住,我们只能在买入之后卖出,这意味着卖出指数不能在买入指数之前卖出 到目前为止,我所做的是: package com; public class Stock { public static void main(String[] args) { i

需要最大利润

如果我只能买一次,卖一次,我可以修改什么以获得最大利润? 也就是说,如果我以5英镑买入,以150英镑卖出,那么它的最大利润是多少

目前我所做的是当价格低于第二天时买入,如果价格高于第二天时卖出

显然,我们必须记住,我们只能在买入之后卖出,这意味着卖出指数不能在买入指数之前卖出

到目前为止,我所做的是:

package com;

public class Stock {

    public static void main(String[] args) {

        int[] prices = {20,10,70,80,5,150,67};
        int length = prices.length-2;
        int buy=0;
        int sell=0;
        int buyIndex=-1;
        int sellIndex=-1;

        int i=0;
        for (i =0 ; i<=length ;i++ ){

            // buy logic start
            if(prices[i]<prices[i+1]){
                if(i>buyIndex){
                    buy= prices[i];
                    buyIndex=i; 
                    System.out.println("buy"+buy);
                    System.out.println("buyIndex"+buyIndex);
                }               
            } // buy logic finish


         // sell logic start
            if(buy!=0 && i>buyIndex ){
                System.out.println("inside sell logic");
                if(prices[i]>prices[i+1]){
                    sell = prices[i];
                    sellIndex = i;
                    System.out.println("sell"+sell);
                    System.out.println("sellIndex"+sellIndex);

                }
            } // sell logic end
        } // for loop end

    } // main end

}

您可以定义两个辅助数组:最小和最大,其中:

min[0] = array[0]
min[i] = min(min[i-1], array[i]    0 < i < n
直观地说,max[i]是i之后或i处的最大数字

现在,一旦你有了这些数组,max[i]-min[i]就是一只股票获得的最大利润,它最多可以在第一天买入,至少可以在第一天卖出。如果你遍历了所有的is,这基本上就是有效事务的定义。
如果你检查所有的0闻起来像是家庭作业。顺便说一句,我并不认为这是一个与编程相关的问题。@BranislavLazic它不是家庭作业。我只是在试一些拼图。我很清楚,在提出这个问题之前,我们必须自己尝试一下,所以我试着去做。并发布了我到目前为止所做的。谢谢,我会尽力按照你的建议去做。
min[0] = array[0]
min[i] = min(min[i-1], array[i]    0 < i < n
max[0] = array[n-1]
max[i] = max(max[i+1], array[i])   0 <= i < n-1