Ecco un problema algoritmico che sto cercando di risolvere:
Given a list
[x_1,x_2,...,x_n]
return a permutation of elements of the list [y_1,y_2,...,y_n] (where for eachi
we havey_i = x_j
for only onej
) which maximises the sum fromk=1
tok=n-1
of|y_k-y_(k+1)|
.
Quindi per semplificare - otteniamo un elenco di numeri interi e dobbiamo "mescolare" questi numeri in modo tale da ottenere un elenco in cui prendiamo la somma di tutti |y_m-y_n|
tale che y_m
e y_n
sono uno accanto all'altro, otteniamo il numero massimo possibile di tutte le permutazioni degli elementi nell'elenco.
Penso che questo possa essere risolto in O(n*log n)
, ho pensato di ordinare l'elenco e di restituire una lista in cui il primo elemento è l'elemento massimo, l'elemento successivo è minimo, il prossimo è il massimo di quelli a sinistra, ecc ... Ma questo porta verso il nulla, non posso provare che sia corretto, quindi probabilmente non lo è. Quindi, qualche consiglio su come affrontare questo problema?