如果我有五个变量
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??
}
答案 0 :(得分:11)
<强>优雅强>
int[] arr = { a, b, c, d, e };
bool b = arr.Distinct().Count() == arr.Length;
<强>高效强>
Your code is the most efficient
我想这是你问题最简单的解释。
答案 1 :(得分: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
}
不一定完全这样,只是在阅读时眼睛更容易一些。
答案 2 :(得分:1)
我会想到:
int[] x = new int[] {a,b,c,d,e};
if (x == x.Distinct().ToArray())
{
}
答案 3 :(得分:1)
如果我们正在打代码高尔夫,我们可以将这一切都打到一行并削减6个字符:
bool d = (new int[]{ a, b, c, d, e })
.GroupBy(i => i)
.Where(i => i.Count() > 1)
.Any();