现有S1=",1,2,3,4,5,"
S2="3,2,7,8,10,"
求一个高效的去重算法,使得
S3=S1+S2的不重部分;
即:S3=",1,2,3,4,5,7,8,10,"
大家来挑战下!

解决方案 »

  1.   

    循环 OR 递归?干脆直接用Dictionary来trycatch,方法有很多种,没有最好只有更好。期待牛人写代码
      

  2.   

    要么使用二叉排序数,要么使用hash。
      

  3.   

    s1,s2,s3分别做3个数组,并按值大小依次导入数组
    for(int i=0;i<(s1.count+s2.count);i++)
    {
    if(s3.find(s1[i])==0)
    {
    s3.add(s1[i]);
    }
    if(s3.find(s2[i])==0)
    {
    s3.add(s1[i]);
    }
    }
    最后按S3的值重新排序
      

  4.   

    就是循环判断s3中的数字和s1或s2中的字符是否存在
    不存在就加到s3中
      

  5.   

    int[] S1 = { 1, 2, 3, 4, 5 };
    int[] S2 = { 3, 2, 7, 8, 10 };var S3s = S1.Union(S2);
    foreach (var S3 in S3s)
      MessageBox.Show(S3.ToString());