gpt4 book ai didi

java - 如何避免使用双循环来改进这种方法?

转载 作者:行者123 更新时间:2023-12-04 02:27:35 25 4
gpt4 key购买 nike

我在一次采访中被要求在没有嵌套 for 循环的情况下重写这个方法。除此之外,我只知道数组的大小相同。解决这个问题的好方法是什么?

public int addTwo(int[] first, int[] second) {
int result = 0;
for (int k : first) {
for (int i : second) {
result += k * i;
}
}
return result;
}

最佳答案

如果我们记得 Matematics,如果在第一个数组中我们有 k1, k2, k3,在第二个数组中我们有 i1,i2,i3,所以结果 k1 * i1 + k1 * i2 + k1 * i3 + k2 * i1 + ...

所以我们可以看到,我们应该重构这个数学表达式,如 k1 * (i1 + i2 + i3) + k2 * (i1 + i2 + i3) + k3 * (i1 + i2 + i3)

k1 * (i1 + i2 + i3) + k2 * (i1 + i2 + i3) + k3 * (i1 + i2 + i3) = (k1 + k2 + k3) * (i1 + i2 + i3).

所以你可以重构你的代码

public int addTwo(int[] first, int[] second) {
int firstSum = 0;
int secondSum = 0;

for (int k : first) {
firstSum += k;
}

for (int i : second) {
secondSum += i;
}

return firstSum * secondSum;
}

关于java - 如何避免使用双循环来改进这种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66447319/

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