Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Algorithm 如何从相同号码列表中识别唯一不同的号码?_Algorithm_Sorting_Search_Data Structures_Linear Search - Fatal编程技术网

Algorithm 如何从相同号码列表中识别唯一不同的号码?

Algorithm 如何从相同号码列表中识别唯一不同的号码?,algorithm,sorting,search,data-structures,linear-search,Algorithm,Sorting,Search,Data Structures,Linear Search,阿萨拉穆阿莱库姆(愿你平安) 如果在n个数字的列表中,n-1个数字是相同的,并且只有一个数字是唯一的,那么除了线性搜索之外,是否有其他方法来识别相同的数字以及列表的唯一数字?您需要至少解析列表一次。因此,该算法至少是O(n),而您提到的线性搜索可以为您提供帮助。比O(n)做得更好是不可能的,首先对列表进行排序。那么你只需要检查三个数字。第一个,最后一个和介于两者之间的一个,比如说第二个。三个中的两个将匹配n-1个相同的数字。三者中的第三个将是独一无二的。选择一种排序方法,该方法在有大量匹配项的列

阿萨拉穆阿莱库姆(愿你平安)


如果在n个数字的列表中,n-1个数字是相同的,并且只有一个数字是唯一的,那么除了线性搜索之外,是否有其他方法来识别相同的数字以及列表的唯一数字?

您需要至少解析列表一次。因此,该算法至少是
O(n)
,而您提到的线性搜索可以为您提供帮助。

O(n)
做得更好是不可能的,首先对列表进行排序。那么你只需要检查三个数字。第一个,最后一个和介于两者之间的一个,比如说第二个。三个中的两个将匹配n-1个相同的数字。三者中的第三个将是独一无二的。选择一种排序方法,该方法在有大量匹配项的列表上运行良好。@rossum这不是比N lg N更糟糕吗?选择一种算法,其中几乎排序的数组是最佳情况;只有一个元素不正确。