gpt4 book ai didi

java - 通过迭代数组并将每个元素除以以 1 开头的数字来找到最小值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:55 24 4
gpt4 key购买 nike

我有一个下面的方法,它迭代一个距离数组并将每个元素除以一个从 1 开始的数字并得到总和。如果总和大于值 points它被传递给方法,然后在 for 循环中再次开始并除以 2 并继续下去,直到找到小于值 points 的总和。 .

下面的代码可以工作,但是有什么办法可以把它写得更好吗?

  public static int findMin(List<Integer> distance, int points) {
int sum = 0;
int c = 1;
while (true) {
for (Integer dist : distance) {
sum = (int) (sum + Math.ceil(dist / c));
}
if (sum <= points) {
break;
}
c++;
sum = 0;
}
return c;
}

最佳答案

如果没有特定原因对每个比值而不是最后的和做Math.ceil,你可以先求所有元素的和,然后求c的值

总和/c <= 点数

总和/点<= c

如果 0 <(总和/点)< 1,则 c = 1

else c = Math.ceil(sum/points)

关于java - 通过迭代数组并将每个元素除以以 1 开头的数字来找到最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54229957/

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