gpt4 book ai didi

java - CodeSignal 问题中的相邻元素产品任务 - java

转载 作者:行者123 更新时间:2023-12-01 06:02:56 25 4
gpt4 key购买 nike

我花了 2 个小时试图解决这个问题。这就是任务:给定一个整数数组,找到具有最大乘积的相邻元素对并返回该乘积。

示例

对于 inputArray = [3, 6, -2, -5, 7, 3],输出应为相邻元素产品(输入数组)= 21。

7 和 3 产生最大的产品。

这就是我的解决方案。

int adjacentElementsProduct(int[] inputArray) {

int[] tab = new int[29];
int len = inputArray.length;

for(int a = 0, int b = 1; a < len; a++, b++)
{
tab[a] = inputArray[a] * inputArray[b];
}

int max = -100;

for(int i = 0; i < tab.length; i++)
{
if (tab[i] > max)
max = tab[i];
}

return max;
}

That's screen with errors

当然,我可以找到另一个(可能更短)的解决方案,但我很好奇为什么我的解决方案不起作用。谢谢。

编辑:警告是因为我们从 0 开始数组,而不是 1。所以在我的循环中它将是inputArray.length - 1代替输入数组的长度我也尝试用另一种方式解决这个问题,这是我的两个解决方案:

int adjacentElementsProduct(int[] inputArray) {

int[] tab = new int[inputArray.length - 1];

for(int a = 0; a < inputArray.length - 1; a++)
{
tab[a] = inputArray[a] * inputArray[a+1];
}

int max = -10000000;

for(int i = 0; i < inputArray.length - 1; i++)
{
if (max < tab[i])
max = tab[i];
}

return max;
}

第二个:

int adjacentElementsProduct(int[] inputArray) {
int wynik = -1000;
int mnozenie;
for(int i = 0; i < inputArray.length - 1; i++){
mnozenie = inputArray[i] * inputArray[i+1];
if(mnozenie > wynik)
wynik = mnozenie;
}
return wynik;
}

但感谢@cricket_007 和@AhmadWabbi 的帮助:)

最佳答案

Java单行解决方案,利用 map 功能

int adjacentElementsProduct(int[] inputArray) {

return IntStream.range(1, inputArray.length).map(i->inputArray[i]*inputArray[i-1]).max().getAsInt();

}

JavaScript 单行解决方案

    function adjacentElementsProduct(inputArray) {        

return Math.max(...arr.slice(1).map((x,i)=>[x*arr[i]]))

}

关于java - CodeSignal 问题中的相邻元素产品任务 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com