如果我有五个变量
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??
}
如果我有五个变量
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??
}
优雅的
int[] arr = { a, b, c, d, e };
bool b = arr.Distinct().Count() == arr.Length;
高效的
Your code is the most efficient
我想这是对您问题的最简单的解释。
这几乎是最有效的方法。它不一定是我见过的最好看的代码,但它会工作得很好。任何其他涉及数据结构或函数的解决方案都不太可能更快。
我会重新编码它的美感:
if (a != b && a != c && a != d && a != e
&& b != c && b != d && b != e
&& c != d && c != e
&& d != e
) {
// Blah blah blah
}
不一定完全一样,只是阅读时眼睛更容易一些。
我会认为是这样的:
int[] x = new int[] {a,b,c,d,e};
if (x == x.Distinct().ToArray())
{
}
如果我们正在玩代码高尔夫,我们可以将这一切归结为一行并刮掉 6 个字符:
bool d = (new int[]{ a, b, c, d, e })
.GroupBy(i => i)
.Where(i => i.Count() > 1)
.Any();