【发布时间】:2025-12-08 21:40:01
【问题描述】:
给定两个整数数组 nums 和大小分别为 n 和 m 的乘数,其中 n >= m。数组是 1 索引的。
你从 0 分开始。你想执行 m 个操作。在第 i 个操作(1-indexed)上,您将:
约束: 1.从数组nums的开头或结尾选择一个整数x。
2.将乘数[i] * x 添加到您的分数中。
3.从数组nums中删除x。
执行m次操作后返回最高分。
例如:nums = [-5,-3,-3,-2,7,1] 和乘数 = [-10,-5,3,4,6]
输出:102
public int maximumScore(int[] nums, int[] multipliers) {
int totalValue = 0;
int length = multipliers.length;
int start = 0;
for(int i =0,j=nums.length-1;i<=j && length!=0;){
int max = 0;
if(nums[i] * multipliers[start] > nums[j]*multipliers[start]){
max = nums[i] * multipliers[start];
i++;
}else{
max = nums[j]*multipliers[start];
j--;
}
start++;
totalValue+=max;
length--;
}
return totalValue;
}
我的代码,但遗憾的是不起作用并将输出打印为 120 .. 任何带有解释的解决方案都会有所帮助,谢谢。
【问题讨论】:
-
您的示例输入有问题,因为我的结果是 84,而不是 120
-
@aran 数字看起来不错。 解决方案:
-10 * -5(start) + -5 * -3(start) + 3 * -3(start) + 4 * 1(end) + 6 * 7(end) = 102 -
@Andreas nope,看jdoodle.com/iembed/v0/9F9 - 甚至短路了其中一个数组,但值是 78 和 84,具体取决于该排序
-
@aran 哦,你说的是问题代码的实际输出,而不是问题的正确解决方案。我误解了你的评论,对不起。
-
@Andreas nono,我没有猜到这是结果,只是具有给定值的示例的输出。干杯! 而且你总是得到它男孩..
标签: java arrays multiplication