检查所有数字是否相等

时间:2011-01-18 21:49:55

标签: performance algorithm

检查数组(或列表)中的所有数字是否相等的最佳方法是什么?

我认为解决方案作为寻求第一个不等元素的循环可能是有效的,但不是那么优雅或可读。一行中的任何解决方案?

3 个答案:

答案 0 :(得分:3)

这个问题的任何解决方案必须在Ω(n)时间运行并进行Ω(n)比较,因为如果对于某些足够大的数组不是这种情况,则无法查看所有元素到检查它们是否具有相同的值。

对数组执行线性扫描以查找与第一个值不同的任何值可能是解决此问题的绝对最佳方法。它总共进行了(n - 1)次比较,渐近地与下界匹配,并且既优雅又易于实现。

答案 1 :(得分:2)

某种C伪代码

i = len(list) - 1;
while (list[i] == list[i+1] && i) i--;
return i == 0;

答案 2 :(得分:0)

虽然用正确的语言不是一行,但我相信你可以把它拿到一条。

编辑:因为您说过C#...

return list.Length > 0 && list[0] == list.Aggregate(list[0], (current, i) => current & i);