Найдите пару смежных элементов, которая имеет наибольшее произведение - PullRequest
0 голосов
/ 06 февраля 2020

Учитывая массив целых чисел, могу ли я найти пару смежных элементов, которые имеют наибольший продукт, и вернуть этот продукт, используя apply?

Можно ли сделать это с помощью функции apply?

Ожидается input:

x <- c(3, 6, -2, -5, 7, 3)

Ожидаемый результат:

adjacent_elements_product(x) = 21

Подобные сообщения, которые могут иметь отношение к теме: Учитывая массив целых чисел, найдите пару смежных элементов, которая имеет наибольшее произведение и вернуть этот продукт

Ответы [ 2 ]

5 голосов
/ 06 февраля 2020

Вы можете использовать прокатку apply

max(zoo::rollapply(x, 2, prod))
#[1] 21

Базовая опция R будет:

max(head(x, -1) * tail(x, -1))
2 голосов
/ 06 февраля 2020

Использование базы R и функции, как в вашем примере:

x <- c(3, 6, -2, -5, 7, 3)

adjacent_elements_product <- function(x) {
  return(max(x[-1] * x[-length(x)]))
}

adjacent_elements_product(x)
...