假设我们有一个像[6,5,4,7,3]这样的数字列表。我们如何判断数组是否包含连续数字?一种方法是对它们进行排序,或者我们可以找到最小值和最大值。但我们可以根据元素的总和来确定吗?例如。在上面的例子中,它是25.有人可以帮我这个吗?
答案 0 :(得分:3)
元素之和本身是不够的。
相反,您可以检查:
和其中之一:
或
对列表进行排序并检查第一个元素和最后一个元素。
一般情况下,这是O(n log(n)),但如果您的数据集有限,则可以使用counting sort或radix sort在O(n)时间内进行排序。
传递数据以获得最高和最低元素。
当您通过时,将每个元素添加到哈希表中,并查看该元素现在是否已添加两次。这或多或少是O(n)。
要节省存储空间(哈希表),请使用近似方法。
传递数据以获得最高和最低元素。
正如您所做的那样,实现一种算法,该算法具有高(读取用户定义)概率,确定每个元素是不同的。存在许多这样的算法,并且它们在数据挖掘中使用。这是指向描述不同方法的paper的链接。
答案 1 :(得分:0)
如果数组的最大数和最小数之差等于n-1,则数组中的数字将是连续的。前提是数字是唯一的(其中n是数组的大小)。当然,最小和最大数量可以用O(n)计算。