Поиск по массиву (ручной)

200
15 января 2022, 05:30

Всех приветствую, у меня такой вопрос, если у меня массив с почти всеми одинаковыми числами, например, 17 и одним каким-то другим, например, c 3, ({17,17,3,17,17,17}) то как мне вывести число которое отличается от всех на экран? Я могу это сделать если знаю конкретное место нахождения числа, которое отличается или числа, которое со всеми одинаковое, но если число будет записано рандомно, то нет.. П.C. Прошу не применять автоматические методы по поиску в массиве, т.к. моя цель научиться правильно делать алгоритмы и думать, а не запускать уже готовое. Любая идея тоже сгодится. Спасибо

Answer 1

Предлагаю следующий алгоритм:

int повторяется;
int[] nums = {1, 1, 2, 1, 1, 1};
if(nums.length <= 2) {
    throw new IllegalArgumentException();
}
if(nums[0] == nums[1] || nums[0] == nums[2]) {
    повторяется = nums[0];
} else {
    повторяется = nums[1];
}
int index = -1;
for(int i = 0; i < nums.length; i++) {
    if(nums[i] != повторяется) {
        index = i;
        break;
    }
}
if(index == -1) {
    System.err.println("Все элементы массива идентичны");
} else {
    System.out.println("Индекс элемента - " + index);
}

Проверку на то, один ли он в массиве, можете добавить сами, введя новую переменную.

READ ALSO
Присваивание значения переменной - Scanner несколько раз

Присваивание значения переменной - Scanner несколько раз

Есть сканер Int чиселС помощью try catch обрабатываю ошибку того, что это не число типа Int, но при вводе чего-то другого, кроме целого числа выдается...

91
Не выполняется Handler

Не выполняется Handler

Подскажите пожалуйста, почему код выполняется только один раз и всё:

74
Ошибка при возвращении в методе Java

Ошибка при возвращении в методе Java

Ошибка в return getDistEclipse хочет объявление отдельного класса для getDist

71
Как лучше всего сохранять лог(java)

Как лучше всего сохранять лог(java)

Возник такой вопрос, как работать с логом в AndroidК примеру у меня есть приложение, оно обменивается данными с другим устройством

83