1

如果我有五个变量

int a,b,c,d,e;

确保它们都是独一无二的最有效方法是什么?

if(a!=b && a!=c && a!=d && a!=e && b!=c && b!=d && b!=e && c!=d && c!=e && d!=e)
{ 
   //Is this the most efficient way??
}
4

4 回答 4

11

优雅的

int[] arr = { a, b, c, d, e };

bool b = arr.Distinct().Count() == arr.Length;

高效的

Your code is the most efficient

我想这是对您问题的最简单的解释。

于 2012-05-22T03:03:35.560 回答
7

这几乎最有效的方法。它不一定是我见过的最好看的代码,但它会工作得很好。任何其他涉及数据结构或函数的解决方案都不太可能更快。

我会重新编码它的美感:

if (a != b && a != c && a != d && a != e
           && b != c && b != d && b != e
                     && c != d && c != e
                               && d != e
) { 
    // Blah blah blah
}

不一定完全一样,只是阅读时眼睛更容易一些。

于 2012-05-22T03:04:32.147 回答
1

我会认为是这样的:

int[] x = new int[] {a,b,c,d,e};
if (x == x.Distinct().ToArray())
{
}
于 2012-05-22T03:08:01.070 回答
1

如果我们正在玩代码高尔夫,我们可以将这一切归结为一行并刮掉 6 个字符:

bool d = (new int[]{ a, b, c, d, e })
              .GroupBy(i => i)
              .Where(i => i.Count() > 1)
              .Any();
于 2012-05-22T03:47:31.690 回答