Процесс либо меньший, либо самый большой элемент, в зависимости от того, что ближе (по значению, а не индекс) к стартовому элементу, а затем просто обработайте оставшиеся элементы вправо или влево (в зависимости от того, обработали ли мы наименьший или самый большой элемент )
Итак, дано 4,9,10,11,19
начиная с 10
:
Расстояние от 10
на самый маленький элемент 4
6, расстояние от 10
к крупнейшему элементу 19
9, так что перейти к 4
.
Затем обработайте оставшиеся элементы в отсортированном порядке - 9, 11, 19
.
Это дает нам 10 -> 4 -> 9 -> 11 -> 19
, который стоит 6 + 5 + 2 + 8 = 21
.
Это можно сделать в O(n)
.
Примечание:
Стоит отметить, что, пока мы впервые движемся к ближайшей стороне, затем к другой стороне (независимо от того, какие элементы мы обрабатываем, когда, если мы не изменим направление более одного раза), мы получим оптимальный результат Анкет
Вот почему 10 -> 9 -> 4 -> 11 -> 19
также дает 21
.