java - 一些测试用例满足,而另一些则不满足

标签 java arraylist

我的程序应该传递 2 个数组列表、到达时间和持续时间,并且应该返回基本上可以在不重叠的情况下发生的事件数量。然而,很多测试用例没有成功通过。下面显示了预期的输出:

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 个人能够呈现。以下是我当前的计划:

class Result {
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).equals(arrival.get(i + 1))) {
                    counter++;
                    i++;
                } else if (arrival.get(arrival.size()-1).equals(arrival.get(i))) {
                  counter++;
                }
            }
        }
        return counter;
    }
}

该程序适用于以下测试用例:

arrival = [1,1,1,1,4]
duration = [10,3,4,6,2]
Output: 2

但在以下情况下会失败:

arrival = [1,3,5]
duration = [2,2,2]
Expected:3
Mine:2

或者:

 arrival = [1]
 duration = [5]
 Expected = 1
 Mine = 0

我似乎无法看出问题所在。

有用户在评论中提交了自己对该问题的逻辑,下面是植入:

class Result {
public static int maxEvents(List<Integer> arrival,List<Integer> duration) {
       int counter = 0;
       if (arrival.size() == 0) {
         return 0;
       } else  {
          counter = 1;
          ArrayList <Integer> timeseq = new ArrayList<Integer>();
          for (int i = 0;i< arrival.size(); i++) {
            timeseq.add(arrival.get(i));
            timeseq.add(arrival.get(i)+duration.get(i));
          }
          for (int j =1; j<= timeseq.size()-2; j+=2) {
            if(timeseq.get(j) <= timeseq.get(j+1)) {
              counter++;
            }
          }
        return counter;
      }
  }
}

此代码未通过测试用例

 arrival = (1,1,1,1,4) duration = (10,3,6,4.2)
Expected = 2 
Mine = 1

最佳答案

也许您混淆了 .size() 和 .length()。这些是不同的方法,它们有不同的返回。考虑@Nexevis 的回答,也许删除“-1”,因为您正在调用数组的大小。

关于java - 一些测试用例满足,而另一些则不满足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57980205/

相关文章:

java - jasp页面整个页面刷新

java - Android 套接字连接问题

ArrayList 的 C# 数组列表

java - ArrayList<String>.add 抛出 UnsupportedOperationException

Java:在没有重复代码的情况下处理多个复杂接口(interface)

java - Android - twitter4j Proguard 错误

java - 使用通用接口(interface)实例化枚举集合的单行代码

java - 如何在java中将多个ArrayLists一起排序

java - 如何按照我想要的方式对对象的 ArrayList 进行排序

Android ArrayAdapter getItem() 类型不兼容?