Недавно я выполнял некоторые задания CodeWars, и у меня возникла проблема с этим.
«Вам дан массив (длина которого будет не менее 3, но может быть очень большим), содержащий целые числа. Массив либо полностью состоит из нечетных целых чисел, либо полностью состоит из четных целых чисел, за исключением одного целого числа N. Напишите метод, который принимает массив в качестве аргумента и возвращает этот «выброс» N».
Я просмотрел некоторые решения, которые уже есть на нашем сайте, но я хочу решить проблему, используя свой собственный подход.
Основная проблема в моем коде, по-видимому, заключается в том, что он игнорирует отрицательные числа, хотя я реализовал метод Math.abs() в scala.
Если у вас есть идея, как обойти это, это более чем приветствуется.
Большое спасибо
object Parity {
var even = 0
var odd = 0
var result = 0
def findOutlier(integers: List[Int]): Int = {
for (y <- 0 until integers.length) {
if (Math.abs(integers(y)) % 2 == 0)
even += 1
else
odd += 1
}
if (even == 1) {
for (y <- 0 until integers.length) {
if (Math.abs(integers(y)) % 2 == 0)
result = integers(y)
}
} else {
for (y <- 0 until integers.length) {
if (Math.abs(integers(y)) % 2 != 0)
result = integers(y)
}
}
result
}
var
s) и тот факт, что вы несколько раз проходите всю коллекцию. Очень неэффективно и совершенно не нужно. (И вы можете попытаться отформатировать код, чтобы сделать его более читаемым.) - person jwvh   schedule 13.06.2019