Java 搜索具有大O时间约束的重复项

Java 搜索具有大O时间约束的重复项,java,arrays,time,arraylist,big-o,Java,Arrays,Time,Arraylist,Big O,对于赋值,我要创建一个构造函数,将字符串[]name和int[]rank作为参数,以完成O(n log n)中的以下任务: (数据验证): 检查名称和等级的长度是否相同--(时间:O(1)) 检查名称和排名是否均不为空---(时间:O(1)) 检查名称是否不包含任何重复或空字符串--(时间:O(n^2)) 检查秩是否只包含不同的元素--(时间:??) (实际对象声明): 将名称和等级的每个索引值添加到自定义类型的数组列表中(时间:O(n)) 对于该项目,我不允许使用数组和ArrayList之

对于赋值,我要创建一个构造函数,将字符串[]name和int[]rank作为参数,以完成O(n log n)中的以下任务:

(数据验证):

  • 检查名称等级的长度是否相同--(时间:O(1)
  • 检查名称排名是否均不为空---(时间:O(1)
  • 检查名称是否不包含任何重复或空字符串--(时间:O(n^2)
  • 检查是否只包含不同的元素--(时间:??)
  • (实际对象声明):

    • 名称等级的每个索引值添加到自定义类型的数组列表中(时间:O(n)

    对于该项目,我不允许使用数组和ArrayList之外的任何数据结构(没有映射或设置接口),但我可以使用arrays类中的方法来搜索和排序数组。我不知道如何在O(n logn)时间内完成所有这些事情。我尤其不知道如何在不到O(n^2)的时间内完成步骤3。谢谢你的帮助

    步骤1和步骤2很简单

    步骤3:

    • 使用
      数组对数组进行排序。排序(数组)
      =>
      O(n日志n)
    • 在数组上迭代检查每个条目与下一个条目(查看是否找到重复项)=>
      O(n)
    ==>总计=
    O(n日志n)


    步骤4:相同的方法

    谢谢您的回复!拥有一个排序数组意味着我只需要比较名称[I]与名称[I+1],名称[I+1]与名称[I+2]等等。我以前没想过这个。