Определить, монотонен ли слайс: отсортирован по неубыванию или по
невозрастанию.
func IsMonotonic[T cmp.Ordered](s []T) bool
Требования
- Неубывание (
1 2 2 3) и невозрастание (3 2 2 1) — монотонны. Смена
направления (1 3 2) — нет.
- Равные соседи направление не задают:
2 2 1 3 не монотонен, 1 1 1 0 —
монотонен.
- Пустой слайс,
nil и слайс из одного элемента монотонны.
- Один проход, O(1) дополнительной памяти. Входной слайс не меняется.
Пример
IsMonotonic([]int{1, 2, 2, 3}) // true
IsMonotonic([]int{6, 5, 4, 4}) // true
IsMonotonic([]int{1, 3, 2}) // false
IsMonotonic([]string{"c", "b", "a"}) // true
Устно: что вернёт твоё решение для []float64{1, NaN, 2} и почему?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.