gpt4 book ai didi

java - Google Foobar power_hungry

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:16 25 4
gpt4 key购买 nike

<分区>

你好,我需要帮助解决我的一个 Google foobar 问题,这是我目前所得到的。

package com.google.challenges;
import java.math.BigInteger;

public class Answer{


public static String answer (int[] xs){
BigInteger result = new BigInteger("1");
int xsLen = xs.length, pos = 0;
int[] negatives = new int[xsLen];
if (xsLen == 1){
return Integer.toString(xs[0]);
}
// Split the input up into pos/negative. Pos get put onto the final value, as they don't need anything else.
// they are all useful. negative to onto seperate array and get sorted later
for (int n = 0;n < xsLen;n++){
int val = xs[n];
if (val == 0){
continue;
}
if (val > 0){
result = result.multiply(new BigInteger(Integer.toString(val)));
} else {
negatives[pos] = val;
pos++;
}
}
// even number of negatives means a full product will always be positive.
// odd number means that we discard the smallest number to maximise the result.
if ((pos % 2) == 0){
// even number, so add to result
for (int i = 0;i < pos;i++){
result = result.multiply(new BigInteger(Integer.toString(negatives[i])));
}
} else {
// sort then discard the minimum
int min = -1000; int mPos = -1;
for (int i = 0;i < pos;i++){
if(negatives[i] > min){
min = negatives[i];
mPos = i;
}
}
for (int j = 0;j < pos;j++){
if(j == mPos){
continue;
}
result = result.multiply(new BigInteger(Integer.toString(negatives[j])));
}
}

// done, return the string;
return result.toString();
}
}

问题来了

您需要弄清楚任何给定阵列中的哪些面板组可以离线维修,同时仍保持每个阵列的最大功率输出量,为此,您首先需要弄清楚最大功率是多少每个数组的输出实际上是。编写一个函数 answer(xs),它接受一个表示数组中每个面板的功率输出水平的整数列表,并返回这些数字的某个非空子集的最大乘积。因此,例如,如果一个阵列包含功率输出水平为 [2、-3、1、0、-5] 的面板,则可以通过获取子集找到最大乘积:xs[0] = 2, xs[1 ] = -3, xs[4] = -5, 给出乘积 2*(-3)*(-5) = 30。所以 answer([2,-3,1,0,-5]) 将是“30”。

每个太阳能电池板阵列包含至少 1 个且不超过 50 个面板,每个面板的功率输出水平绝对值不大于 1000(有些面板故障严重到耗尽能量,但是你知道面板的波稳定器的一个技巧,它可以让你组合两个负输出面板来产生它们功率值的倍数的正输出)。最终产品可能非常大,因此请以数字的字符串表示形式给出答案。

语言

要提供 Python 解决方案,请编辑 solution.py要提供 Java 解决方案,请编辑 solution.java

测试用例

Inputs:
(int list) xs = [2, 0, 2, 2, 0]
Output:
(string) "8"

Inputs:
(int list) xs = [-2, -3, 4, -5]
Output:
(string) "60"

我已经做了 2 天了,真的很想得到答案,这样我就可以了解我做错了什么并加以改进!感谢阅读,希望你能回答。 :)

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