как посчитать числа java

Даны два рандомно заполненных массива, которые сравниваются между собой. Нужно вывести количество одинаковых элементов... Я нашла эти элементы, но не пойму как найти их количество


Ответы (3 шт):

Автор решения: Vitaly Vasiltsov

Используйте вложенный цикл и переменную для подсчета совпадений.

        int[] array1 = {2, 45, 34, 3, 123, 348, 67, 78, 57, 123, 345, 128, 22};
        int[] array2 = {2, 46, 34, 3, 123, 348, 67, 78, 56, 123, 345, 126, 23};

        int count = 0;

        for (int value : array1) {
            for (int i : array2) {
                if (value == i) {
                    count++;
                }
            }
        }
        System.out.println(count);
→ Ссылка
Автор решения: David Smith
  1. Цикл должен быть бесконечным, или while (true). У тебя он не бесконечный, через 2 в 31й он прекратится, даже если пользователь не введет -1.
  2. Сумма должна накапливаться с каждым числом. Это значит, что твой аккумулятор должен создаваться ДО входа в цикл. А результат печататься после выхода из цикла по break'у.
→ Ссылка
Автор решения: LisovIlya

Чтобы оптимизировать поиск, можно произвести сортировку данных массивов и последущий бинарный поиск каждого элемента наименьшего по размеру массива во втором. Таким образом сложность составит 2 * O(n*log(n)) + n * O(log(n)), что намного быстрее, чем O(n^2) Если функция бинарного поиска возвращает отрицательное значение, тогда такого элемента во втором списке нет, а если неотрицательное, тогда инкрементируем счетчик.

→ Ссылка