1

我需要对两个数组进行反向交集操作并将结果保存在不同的数组中

例如:数组 A {1, 2, 3}; 数组 B {1, 2, 3, 4, 5, 6} 结果数组应该是 {4, 5, 6}

我尝试了以下逻辑但没有用

int k = 0;
int a[2] = {1,10};
int p[10];
int roll[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

for (int i = 0; i < 2; i++)
{
    for (int j = 1; j <= 10; j++)
    {
        if (a[i] == roll[j])
        {
            break;
        }
        else
        {
            p[k] = 0;
            p[k] = roll[j];
            k++;
        }
    }
}

我的 vb.net 项目需要它

4

2 回答 2

9

我不明白 C# 代码与您的 VB.NET 问题有何关系,如果您只想查找integers一个数组中的哪些而不是另一个数组,请使用Enumerable.Except

Dim intsA = {1, 2, 3}
Dim intsB = {1, 2, 3, 4, 5, 6}
Dim bOnly = intsB.Except(intsA).ToArray()
于 2013-07-22T10:17:52.860 回答
1

如果您不能使用 Linq,请尝试以下操作:

Function RevIntersect(arr1() As String, arr2() As String) As String()
    Dim sResult, aux As New List(Of String)()

    aux.AddRange(arr1)
    aux.AddRange(arr2)

    For Each elem As String In aux
        If (Not arr1.Contains(elem) OrElse Not Arr2.Contains(elem)) AndAlso _
        Not sResult.Contains(elem) Then  
            sResult.Add(elem)
        End If
    Next

    Return sResult.ToArray()
End Function
于 2013-07-22T10:19:28.523 回答