Нахождение разницы между двумя массивами 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. Обработка должна быть:
- Если setX[a] > setY[b] -> b++
- Если setX [a]
a++ - Иначе -> добавить setX [a] к результату, a++, b++