static void Main(string[] args){
int[] A = { 1, 2, 3, 4, 5 };
int[] B = { 2, 4, 6 };
IEnumerableen = A.Intersect(B);// A∩B 集合A与集合B的交集
foreach (var item in en)
{
Console.WriteLine(item);
}
IEnumerableen2 = A.Concat(B).Except(A.Intersect(B));// 容斥原理
foreach (var item in en2)
{
Console.WriteLine(item);
}
}
说明,如果楼主不懂容斥原理,请看百度百科:http://baike.baidu.com/link?url=rrcJEUHHoM5wxNGhQ1_ZJnBcmiTl-v9dMbk7YASbFhG3pm2Mktlb8n_q8r-LkDE3XoljmXpBIJr2AvJ1j-BADmAYJUiwdxDmt7G9gNaoO6CQ1xzpEpier-tsapSZAiu3
我扔个砖吧,希望有高手出来扔玉。我用的是Linq的交集与差集求法。
int[] a = new int[5] { 1, 2, 3, 4, 5 };
int[] b = new int[5] { 2, 3, 5, 6, 7 };
Console.WriteLine("两数组都有的元素(交集)");
foreach (var k in a.Intersect(b))
{
Console.WriteLine(k);
}
Console.WriteLine("两数组不同的的元素(差集)");
var s = a.Except(b).ToList();
s.AddRange(b.Except(a).ToList());
foreach (var k in s)
{
Console.WriteLine(k);
}
Intersect就是交集,两个数组都有的元素,然后遍历一下输出。
Except差集,这里要差两次,一次是a对b,另一次是b对a。
希望有更好更高效的写法。
做两个for循环比较一下值就可以了。