查找序列中缺少的数字

时间:2013-07-12 00:39:12

标签: c# math missing-data

我需要从一系列数字中找到一个缺失的数字

,例如

4 8 12 16 __ 24。

我需要找到丢失的号码。我该如何以编程方式执行此操作?

数字和缺失的位置不是静态的,因此它们应该能够改变。

希望有可能。

2 个答案:

答案 0 :(得分:1)

如果你知道它总是一个算术级数,你可以使用公式:

an = a1 + (n - 1) * d

a1是第一个元素,d是2个元素之间的差异,n是要计算的位置,在你的情况下:

an = 4 + (5 - 1) * 4 = 20

请检查:https://en.wikipedia.org/wiki/Arithmetic_progression

答案 1 :(得分:1)

你可以使用一些愚蠢的linq,就像这个愚蠢的例子:)

var numbers = new List<int>{4, 8, 12, 16, 24, 28, 36};
int first = numbers.First();
int last = numbers.Last();

var missing = Enumerable.Range(first, last).Where(n => n % first == 0).Except(numbers);


Returns:
20
32

- 为downvotes支持自我 -