как посчитать числа 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
→ Ссылка
- Цикл должен быть бесконечным, или while (true). У тебя он не бесконечный, через 2 в 31й он прекратится, даже если пользователь не введет -1.
- Сумма должна накапливаться с каждым числом. Это значит, что твой аккумулятор должен создаваться ДО входа в цикл. А результат печататься после выхода из цикла по break'у.
Автор решения: LisovIlya
→ Ссылка
Чтобы оптимизировать поиск, можно произвести сортировку данных массивов и последущий бинарный поиск каждого элемента наименьшего по размеру массива во втором. Таким образом сложность составит 2 * O(n*log(n)) + n * O(log(n)), что намного быстрее, чем O(n^2) Если функция бинарного поиска возвращает отрицательное значение, тогда такого элемента во втором списке нет, а если неотрицательное, тогда инкрементируем счетчик.