Добро пожаловать в переполнение стека!
Поскольку вы новичок, позвольте мне начать с того, что просьба о решениях здесь обычно не принимается хорошо. Это не место, чтобы другие люди делали вашу работу за вас, поэтому вы должны проверить https://stackoverflow.com/help/how-to-ask, чтобы узнать, что является хорошим вопросом для будущего.
Тем не менее, вместо того, чтобы дать вам решение, позвольте мне посмотреть, смогу ли я помочь вашему пониманию того, что, кажется, сбивает вас с толку. Я собираюсь игнорировать многие "рубиновые", которые могут сильно сокращать вещи, поскольку они хороши, но в конечном итоге кажется, что вам, возможно, все-таки понадобится понимание базового подхода, а не ярлыков, поскольку это то, что помогает вам Программа лучше в долгосрочной перспективе.
if arr[i] == arr[j]
count +=1
end
Приведенный выше код ищет два числа в массиве, которые равны. Это означает, что count
никогда не будет увеличиваться, если в вашем массиве нет двух одинаковых значений, что не соответствует описанию задачи. Кроме того, эта проблема действительно не требует сравнения двух чисел в массиве. Вам просто нужно определить, является ли каждое число нечетным или четным, и найти выброс.
Самым простым (и, возможно, наиболее распространенным) способом программирования определения нечетного числа является использование оператора по модулю (%
). Вы использовали это при проверке переменной count
, что опять же не совсем то, что вам нужно. Вместо этого вы должны использовать его против каждой записи в массиве. Таким образом, для некоторого целого значения n
, n % 2
будет 0, если это четное число, или 1, если это нечетное число. Похоже, что вы в некоторой степени это поняли, но используйте это для каждого числа в массиве, чтобы определить, является ли оно четным или нечетным, вместо переменной count
, и затем вы можете воздействовать на эту информацию для каждого числа.
Как только вы получите его, чтобы определить, является ли каждое число в массиве четным или нечетным, вам нужен способ отследить, ищете ли вы нечетное или четное число. Самый простой способ сделать это - отслеживать четное / нечетное количество в переменной, но иметь одну переменную для четного и отдельную для нечетного. Поэтому, когда вы сталкиваетесь с четным числом, вы можете добавить 1 к четному числу, и аналогично для нечетных чисел, но к нечетному числу. Таким образом, вы узнаете, что тип, который вы ищете (четный или нечетный), будет равным 1 после того, как вы закончите проходить массив. Это означает, что эти переменные должны находиться вне цикла, который просматривает массив, так как вы не хотите, чтобы они сбрасывались для каждого числа в массиве, и вы, вероятно, захотите посмотреть их и после цикла.
Как только вы определили, ищете ли вы нечетный или четный, вы можете пройти через массив второй раз (не вложенный цикл, а второй после первого) и вернуть нечетное или четное число из массив в зависимости от обстоятельств. Есть способы сделать это без второго цикла, но я пытаюсь сделать это прямо вперед.
Надеюсь, это поможет вам найти собственное решение, чтобы вы могли учиться на решении проблемы. Если вы работаете с моим основным макетом, есть несколько способов улучшить его с точки зрения производительности или просто объема кода (например, без использования второго цикла). Рад уточнить, если вам нужно.
Удачного кодирования!