Сводка:
- Удалить повторную точку
- Найти местоположение i минимального значения
- Если значение в i-1 ниже, чем значение в i+1 перевернуть строку (нужно принять крайние случаи, т.е. i = 0 или i = n-1)
- Повернуть массив так, чтобы минимальное значение находилось в заголовке
Общая сложность: O (n)
ПРИМЕЧАНИЕ: шаги 3 и 4 не являются абсолютно необходимыми.На шаге 2 вы можете получить местоположение минимума, а на шаге 3 - ориентация .При сравнении двух разных массивов, просто начните со сравнения * местоположений * с минимумов и двигайтесь в соответствии с ориентацией .
Например:
[pnt1, pnt2,pnt3, pnt4, pnt5, pnt6, pnt1] -> [pnt1, pnt2, pnt3, pnt4, pnt5, pnt6] -> [pnt1, pnt2, pnt3, pnt4, pnt5, pnt6]
[pnt2, pnt3, pnt4, pnt5, pnt6, pnt1, pnt2] -> [pnt2, pnt3, pnt4, pnt5, pnt6, pnt1] -> [pnt1, pnt2, pnt3, pnt4, pnt5, pnt6]
[pnt2,pnt1, pnt6, pnt5, pnt4, pnt3, pnt2] -> [pnt2, pnt1, pnt6, pnt5, pnt4, pnt3] -> [pnt3, pnt4, pnt5, pnt6, pnt1, pnt2] -> [pnt1, pnt2, pnt3, pnt4, pnt5, pnt6]
[pnt1, pnt2, pnt3, pnt5, pnt6, pnt4, pnt1] -> [pnt1, pnt2, pnt3, pnt5, pnt6, pnt4] -> [pnt1, pnt2,pnt3, pnt5, pnt6, pnt4]