Получение абсолютной разницы между последовательными элементами в массиве и возврат того, какая разница произошла наиболее - PullRequest
0 голосов
/ 23 февраля 2019

Таким образом, если существует массив, подобный [2, 3, 5, 7, 11], разница будет 1, 2, 2, 4, поэтому вы получите 2.

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

Мне интересно, есть ли другой, лучший способсделать это, или если это решение будет считаться эффективным?

1 Ответ

0 голосов
/ 23 февраля 2019

Это решение будет эффективным, если оно будет реализовано "правильно".Если вы используете пакет с типом векторизованного массива, используйте операцию shift, чтобы получить вектор различий.Это O (N) с векторизацией или без нее.

Второй линейный проход найдет режим массива и даст ваш окончательный ответ.Сохраняйте простой массив, чтобы подсчитать, сколько раз каждое значение появляется:

for item in diff_array:
    mode_ct[item] += 1

Затем найдите максимум mode_ct;вернуть свой индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...