编写一个Java方法,确定是否有任何一对学生都有相同的课程

use*_*097 1 java

这是java工程师的现场面试问题:

给定具有属性Course的Student类型数组,编写一个Java方法,确定数组中的任何一对学生是否具有相同的课程.如果找到匹配项,请务必返回布尔值true.假设有大量学生,请尝试提供最有效的解决方案.

列出您要为上述代码实现的测试方法名称.至少为其中一个提供实施

我找不到最有效的解决方案,有没有人有更好的解决方案?谢谢!

Pet*_*nov 5

如果使用其他数据结构,则只能循环一次,即Set:

boolean check(Student[] array) {
    HashSet<String> courses = new HashSet<String>();
    for(Student tmp : array){
        if(!courses.add(tmp.getCourse()))
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

  • @AmirAfghani你没错,你的想法有不同的特点(你的修改数组,是'O(nlogn)`而不是'O(n)`,并使用'O(1)`额外的内存).你们还依赖于"课程"上的某种顺序(这里不是问题,但更常见的是它可能是). (2认同)