检查矩阵中重复元素的解决方案[1000] [1000]

时间:2015-03-14 15:25:24

标签: c arrays algorithm sorting matrix

需要编写用于检查矩阵[1000] [1000]中重复元素的函数。如果发现任何重复元素,则返回True,否则返回False。

我认为需要通过两个步骤来制定解决方案: 1.将矩阵中的每个元素从小到大排序(在排序期间我们可以检查相等的元素)例如,使用合并排序。 2.从矩阵中的第一个元素到最后一个元素逐个比较上一个和下一个元素。

这个解决方案的效率是否足够好?

1 个答案:

答案 0 :(得分:2)

这是element distinctness problem,你的数组似乎不是很重要,你可以将它视为“常规”数组,并使用元素清晰度的“常规”解决方案解决它,这是:

  1. 对数组进行排序,然后迭代元素并检查是否存在i索引arr[i] == arr[i+1]
    这个解决方案是O(nlogn)时间,假设有效排序,只需要很少的额外空间。
  2. 将元素存储在哈希集中,并在插入每个元素时 - 检查该元素是否已存在于集合中。
    此解决方案在{em>平均值上O(n)时间,O(n^2)时间最坏情况,并且需要O(n)额外空间。