Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 出售股份的最大利润_Java_Algorithm - Fatal编程技术网

Java 出售股份的最大利润

Java 出售股份的最大利润,java,algorithm,Java,Algorithm,你的算法非常擅长预测市场,你现在知道未来几天木制橙色牙签公司(Wood Orange Torthicks Inc.)的股价会是多少 每天,你可以购买一股WOT,出售你拥有的任意数量的WOT,或者根本不进行任何交易。通过最佳交易策略,您能获得的最大利润是多少 例如,如果您知道接下来两天的价格是[1,2],那么您应该在第一天购买一股,然后在第二天出售,以获得1的利润。如果它们是[2,1],那么就无法盈利,所以在那些日子里你不会买卖股票 样本输入 三, 三, 5 3 2 三, 12100 四, 123

你的算法非常擅长预测市场,你现在知道未来几天木制橙色牙签公司(Wood Orange Torthicks Inc.)的股价会是多少

每天,你可以购买一股WOT,出售你拥有的任意数量的WOT,或者根本不进行任何交易。通过最佳交易策略,您能获得的最大利润是多少

例如,如果您知道接下来两天的价格是[1,2],那么您应该在第一天购买一股,然后在第二天出售,以获得1的利润。如果它们是[2,1],那么就无法盈利,所以在那些日子里你不会买卖股票

样本输入

三,

三,

5 3 2

三,

12100

四,

12312

样本输出

0

197

三,

我的代码是:

static int stockmax(int[] prices) {
  int temp[][]=new int[prices.length][prices.length];
    int max;
    int sum=0;
    for(int i=0;i<prices.length;i++)
    {
        max=0;
        for(int j=0;j<prices.length;j++)
        {
            if(j<=i)
            {
                temp[i][j]=0;
            }
            else{
                temp[i][j]=prices[j]-prices[i];
            }
            if(temp[i][j]>max)
                max=temp[i][j];
        }
        sum+=max;
    }
    return sum;
}
static int stockmax(int[]价格){
int temp[][]=新的int[prices.length][prices.length];
int max;
整数和=0;

对于(int i=0;i很明显,对于我们可以购买的任何价格,我们都希望以最高的价格出售。幸运的是,我们得到了最高的价格。因此,反向迭代,我们知道在我们旅行的任何时间点“回到过去”看到的最高未来价格

Python代码:

def stockmax(价格):
n=len(价格)
最高=价格[n-1]
m=[0]*n
#时光倒流,
#决定是否购买
对于x范围内的i(n-2,-1,-1):
#此时买入股票利润最大
#这是我们第二天可能做的
#(存储在m[i+1]中)
#如果我们今天买,我们能做什么
m[i]=m[i+1]+最大值(
#买
最高价格[i],
#不要买
0
)
#更新最高“未来价格”
最高=最高(最高,价格[i])
返回m[0]

很明显,无论我们以什么价格购买,我们都希望以最高的价格出售。幸运的是,我们得到了最高的价格。因此,通过反向迭代,我们知道在旅行“回到过去”的任何时间点所看到的未来最高价格

Python代码:

def stockmax(价格):
n=len(价格)
最高=价格[n-1]
m=[0]*n
#时光倒流,
#决定是否购买
对于x范围内的i(n-2,-1,-1):
#此时买入股票利润最大
#这是我们第二天可能做的
#(存储在m[i+1]中)
#如果我们今天买,我们能做什么
m[i]=m[i+1]+最大值(
#买
最高价格[i],
#不要买
0
)
#更新最高“未来价格”
最高=最高(最高,价格[i])
返回m[0]

是的,我的逻辑确实说明了一天卖出多支股票。假设它是5 4 3 4 5,那么我的代码说明了5天卖出4,3,4。我不明白你的输入,是一次运行吗?@JoakimDanielson输入的第一行是测试用例的数量,后面一行是测试用例中的天数,另一行是价格。我认为代码很好(尽管我会从I+1开始第二个循环,删除temp[][],只使用一个int变量).你怎么知道代码是错的?错误的部分可能在其他地方,我的逻辑是一天卖出多个股票。假设是5 4 3 4 5,那么我的代码是5卖出4,3,4。我不明白你的输入,是一次运行吗?@JoakimDanielson输入的第一行是测试用例的数量,后面是一行wi测试用例中的天数和另一行价格。我认为代码很好(尽管我会在I+1处开始第二个循环,删除temp[]],并只使用一个int变量)。您如何知道代码是错误的?错误的部分可能在其他地方