Нахождение разницы между двумя массивами int

У меня возникают проблемы с выяснением алгоритма, который найдет различия между двумя целочисленными массивами. У меня уже есть метод сортировки, через который он будет проходить, поэтому числа расположены в порядке возрастания.

Например:

SetX = {1, 2, 3, 4, 5}

SetY = {0, 2, 4, 6}

Возвращаемое значение должно быть числами в SetX, которых нет в SetY.

итак resultSet = { 1, 3, 5 }

Иногда я получаю правильный ответ, если я делаю небольшие массивы, но если я делаю массивы длиной 4 или более целых чисел, это дает мне неправильный результат.

Может кто-нибудь просмотреть мой код и сказать, что я делаю неправильно?

public static int firstFruit(int[] setX, int usedSizeSetX, int[] setY, int usedSizeSet2, int[] resultSet) {
    int a = 0, b = 0, c = 0;

    while( a < usedSizeSetX && b < usedSizeSetY){
        if(setX[a] == setY[b]) {
            a++;
        } else if(setX[a] == setY[b]){
            b++;
        } else {
            resultSet[c++] = setX[a++];
            b++;
        }
    }
    return c;
}

1 ответ

Решение

Я думаю, что ваши условия немного FUBAR. Обработка должна быть:

  1. Если setX[a] > setY[b] -> b++
  2. Если setX [a] a++
  3. Иначе -> добавить setX [a] к результату, a++, b++
Другие вопросы по тегам