Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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,假设:假设每个int都是正的。假设数组至少包含3个整数 从上面数组中的三个整数中找出可以得到的最高乘积。我们应该返回300(取10得到)∗ 10∗ 3) 我想用蛮力法解决这个问题。基本上,我想把每个整数乘以另一个整数,然后把乘积乘以另一个整数。有人能告诉我如何使用嵌套的3个循环来实现这一点吗?因为在尝试优化方法之前,我想先了解如何使用蛮力来实现这一点。 谢谢。使用三个for循环: int arr[] = {10, 10, 1, 3}; public静态整数最高乘积(int数组[]) { 如果

假设:假设每个int都是正的。假设数组至少包含3个整数

从上面数组中的三个整数中找出可以得到的最高乘积。我们应该返回300(取10得到)∗ 10∗ 3)

我想用蛮力法解决这个问题。基本上,我想把每个整数乘以另一个整数,然后把乘积乘以另一个整数。有人能告诉我如何使用嵌套的3个循环来实现这一点吗?因为在尝试优化方法之前,我想先了解如何使用蛮力来实现这一点。


谢谢。

使用三个for循环:

int arr[] = {10, 10, 1, 3};
public静态整数最高乘积(int数组[])
{

如果((array==null)| |(array.length使用三个for循环:

int arr[] = {10, 10, 1, 3};
public静态整数最高乘积(int数组[])
{

如果((array==null)| |(array.length有一些解决方案可以忽略暴力

1.排序

首先可以对数组进行排序,这需要O(nlogn)时间。 排序后,选择最后3个项目。因为它们是最高的项目,所以产品将最大

注意:如果数组中有任何负数,它将不起作用。 为了修复它,你可以检查一些组合。首先计算前3项产品,然后计算最后3项,然后计算前2项和最后1项。其中一项将是最大的

2.动态规划


请参阅或问题和动态规划解决方案。它将帮助您理解什么是动态规划,并创建简单的算法来解决您的问题。

有一些解决方案可以忽略暴力

1.排序

首先可以对数组进行排序,这需要O(nlogn)时间。 排序后,选择最后3个项目。因为它们是最高的项目,所以产品将最大

注意:如果数组中有任何负数,它将不起作用。 为了修复它,你可以检查一些组合。首先计算前3项产品,然后计算最后3项,然后计算前2项和最后1项。其中一项将是最大的

2.动态规划



请参阅或问题和动态规划解决方案。这将帮助您理解什么是动态规划,并创建简单的算法来解决您的问题。

为什么不对数组进行排序,并在排序后使用3个最大值?可能的范围是什么?任何元素都可以为负数吗?元素可以为零吗?@YCF\u L:will如果允许负数和零,则无法正常工作。目前无法回答此问题。@Anonymous为什么要在O(n)时间和O(1)内解决此问题额外的空间?可能有人应该发布蛮力解决方案作为答案,然后我们可以将其作为副本关闭,并将此问题的所有解决方案放在一个地方,因为这里的一个解决方案、其他地方的一些解决方案和其他地方的一些解决方案没有多大意义。为什么不对数组进行排序并使用3个最大值排序后的s?可能的范围是什么?任何元素都可以是负数吗?一个元素可以是零吗?@YCF_L:如果允许负数和零,将无法正常工作。目前这个问题无法回答。@Anonymous当可以在O(n)时间和O(1)内解决时,为什么要排序额外的空间?可能有人应该发布暴力解决方案作为答案,然后我们可以将其作为副本关闭,并将此问题的所有解决方案放在一个地方,因为这里的一个解决方案、其他地方的一些解决方案和其他地方的一些解决方案没有多大意义。很好的分析,尤其是开始时的检查。t但是缩进可以改进。考虑到其他约束条件,我发现
int product=1
更容易接受。哦,是的,你是对的,我编辑了它。我也改进了缩进。虽然很可爱,但算法存在整数溢出问题。你应该交换
product
max\u product
。返回b我猜是e max_乘积。很好的分析,特别是开始时的检查。但是缩进可以改进。考虑到其他约束条件,我发现
int product=1
更令人满意。哦,是的,我编辑了它。我也改进了缩进。虽然很可爱,但算法存在整数溢出问题。你应该ld exchange
product
max\u product
。我想返回的应该是max\u product。