gpt4 book ai didi

java - 如何使程序考虑数组列表中不存在的索引

转载 作者:行者123 更新时间:2023-12-02 09:31:05 25 4
gpt4 key购买 nike

我的程序应该传递 2 个数组列表、到达时间和持续时间,并且应该返回基本上可以在不重叠的情况下发生的事件数量。然而,很多测试用例没有通过,因为程序没有计算数组列表最终到达后的持续时间。

以下是我目前所掌握的内容:

class Results {
public static int maxEvents(List<Integer> arrival, List<Integer> duration) {
int counter = 0;
if (arrival.size() == 0) {
counter = 0;
} else {
for (int i = 0; i < arrival.size() - 1; i++) {
if (arrival.get(i) + duration.get(i) <= arrival.get(i + 1)) {
counter++;
} else if (arrival.get(i) == arrival.get(i + 1)) {
counter++;
i++;
}
}
}
return counter;
}
}

我尝试了以下方法,但它不仅没有通过当前失败的测试用例,而且还导致很多成功的测试用例也失败了:

else if (i == arrival.size()-2) {
counter++;
}

显示预期的测试用例如下:

arrivals = [1,3,3,5,7]
duration = [2,2,1,2,1]

第一个人于 1 点到达,停留 2 小时,然后离开。 2 人 3 点到达,但只允许 1 人出席 2 或 1 小时。下一个人在 5 点到达,展示 2 小时。最后一人于 7 点到达,并展示 1 小时。答案输出应该是 4,因为 4 个人能够呈现。

最佳答案

假设您的输入如下所示:

List<Integer> arrival = new ArrayList<Integer>();
arrival.add(10);
arrival.add(12);
arrival.add(15);
arrival.add(17);
arrival.add(20);

List<Integer> duration = new ArrayList<Integer>();
duration.add(3);
duration.add(1);
duration.add(2);
duration.add(4);
duration.add(3);

我建议添加一个存储最接近可用时间的值,这样您就不需要在每一步访问列表中的两个元素:

public static int maxEvents(List<Integer> arrival, List<Integer> duration)
{
int counter = 0;
Integer nextTime = 0;

for (int i = 0; i < arrival.size(); i++)
{
if(nextTime <= arrival.get(i))
{
counter++;
nextTime = arrival.get(i) + duration.get(i);
}
}

return counter;
}

这将确保列表中的每个元素都得到正确测试。

关于java - 如何使程序考虑数组列表中不存在的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57969531/

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