连续数字的总和

时间:2012-09-09 15:39:51

标签: algorithm math sum

假设我们有一个像[6,5,4,7,3]这样的数字列表。我们如何判断数组是否包含连续数字?一种方法是对它们进行排序,或者我们可以找到最小值和最大值。但我们可以根据元素的总和来确定吗?例如。在上面的例子中,它是25.有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:3)

元素之和本身是不够的。

相反,您可以检查:

  • 所有元素都是独一无二的。

和其中之一:

  • min和max之间的区别是正确的

  • 所有元素的总和是正确的。

方法1

对列表进行排序并检查第一个元素和最后一个元素。

一般情况下,这是O(n log(n)),但如果您的数据集有限,则可以使用counting sortradix sort在O(n)时间内进行排序。

方法2

传递数据以获得最高和最低元素。

当您通过时,将每个元素添加到哈希表中,并查看该元素现在是否已添加两次。这或多或少是O(n)。

方法3

要节省存储空间(哈希表),请使用近似方法。

传递数据以获得最高和最低元素。

正如您所做的那样,实现一种算法,该算法具有高(读取用户定义)概率,确定每个元素是不同的。存在许多这样的算法,并且它们在数据挖掘中使用。这是指向描述不同方法的paper的链接。

答案 1 :(得分:0)

如果数组的最大数和最小数之差等于n-1,则数组中的数字将是连续的。前提是数字是唯一的(其中n是数组的大小)。当然,最小和最大数量可以用O(n)计算。