Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 检查矩阵中重复元素的解决方案[1000][1000]_C_Arrays_Algorithm_Sorting_Matrix - Fatal编程技术网

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

C 检查矩阵中重复元素的解决方案[1000][1000],c,arrays,algorithm,sorting,matrix,C,Arrays,Algorithm,Sorting,Matrix,需要编写检查矩阵中重复元素的函数[1000][1000]。如果发现任何重复元素,则返回True;如果没有,则返回False 我认为需要通过两个步骤来制定解决方案: 1.例如,使用合并排序将矩阵中的每个元素从小到大排序(在排序过程中,我们可以检查元素是否相等)。 2.从矩阵中的第一个元素到最后一个元素,逐个比较上一个元素和下一个元素 这个解决方案的效率足够好吗 这就是问题所在,而且数组是2D似乎并不重要,您可以将其视为“常规”数组,并使用元素区分度的“常规”解决方案进行求解,即: 对数组排序,然后

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

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

这个解决方案的效率足够好吗

这就是问题所在,而且数组是2D似乎并不重要,您可以将其视为“常规”数组,并使用元素区分度的“常规”解决方案进行求解,即:

  • 对数组排序,然后迭代元素并检查是否存在索引
    i
    ,以便
    arr[i]==arr[i+1]

    这个解决方案是
    O(nlogn)
    time,假设排序效率高,只需要很少的额外空间
  • 将元素存储在散列集中,插入每个元素时,检查该元素是否已存在于该集中。
    此解决方案平均为
    O(n)
    time,最坏情况为
    O(n^2)
    time,需要
    O(n)
    额外的空间

  • @JerryGoyal OP包含了标记“c”而不是c++如果它足够快,那么它足够快。。。最明显、优化最少的解决方案有时足够快。我们不能为你回答这个问题。写下你的算法。确保它是正确的。然后分析并决定是否应该加快速度。如果您所要寻找的是重复的,您可以将矩阵折叠成一个数组(即2D到1D),然后排序,然后比较连续元素是否相等。我不知道第2点中的平均和最坏情况时间复杂度是如何得到的,您能解释一下吗?它是关于一个特定的哈希函数吗?@sasha哈希表的插入是O(1)个平均大小写和O(n)个麦汁大小写,重复n个元素,你就得到了这种复杂性。