请教C#两个数组找出相同的和各自不同的数值

2025-05-22 09:04:55
推荐回答(3个)
回答1:

  static void Main(string[] args){
    int[] A = { 1, 2, 3, 4, 5 };
    int[] B = { 2, 4, 6 };

    IEnumerable en = A.Intersect(B);// A∩B 集合A与集合B的交集
    foreach (var item in en)
    {
      Console.WriteLine(item);
    }

    IEnumerable en2 = 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

回答2:

我扔个砖吧,希望有高手出来扔玉。我用的是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。

希望有更好更高效的写法。

回答3:

做两个for循环比较一下值就可以了。