Как вернуть true при сравнении массивов с одинаковыми элементами, но в случайных позициях? - PullRequest
1 голос
/ 20 апреля 2019

Сравните два массива.Вернуть true, если первый массив имеет те же элементы, что и второй массив, даже если они находятся в разных позициях.Вот два возможных массива:

int[] arrayA = { 1, 2, 3 };
int[] arrayB = { 3, 2, 1 };

Я могу найти только если массив В имеет одно число в массиве А.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Вы можете использовать метод SequenceEqual (LINQ).

bool areEqual = arrayA.OrderBy(n => n).SequenceEqual(arrayB.OrderBy(n => n));
0 голосов
/ 20 апреля 2019

Один из способов решить эту проблему - создать HashSet<int> из каждого массива, а затем использовать .SetEquals(HashSet<int> hashSet), чтобы проверить, имеют ли они одинаковые значения.

public static bool CompareArrays(int[] array1, int[] array2)
{
    // Create sets using Linq
    HashSet<int> set1 = array1.ToHashSet();
    HashSet<int> set2 = array2.ToHashSet();
    // Compare the sets with .SetEquals()
    return set1.SetEquals(set2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...