使用Big-O时间限制搜索重复项

时间:2014-02-26 03:01:49

标签: java arrays time arraylist big-o

对于赋值,我将创建一个构造函数,将String [] 名称和int [] rank 作为参数,在O(n log)中完成以下任务n):

(数据验证):

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

    • 名称排名的每个索引值添加到自定义类型的ArrayList(时间: O(n)

    对于项目,我不允许使用除数组和ArrayLists之外的任何数据结构(没有Map或Set接口),但我可以使用Arrays类中的方法来搜索和排序数组。我没有看到如何在O(n log n)时间内完成所有这些事情。我特别不知道如何在不到O(n ^ 2)的时间内完成第3步。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

步骤1& 2是微不足道的。

第3步:

  • 使用Arrays.sort(array) =>对数组进行排序O(n log n)
  • 遍历数组,检查每个条目与下一个条目(查看是否找到重复条目)=> O(n)

==>总计= O (n log n)

第4步:相同的方法