Чтобы определить, является ли слайс монотонным, нужно проверить, либо он неубывающий (каждый следующий элемент не меньше предыдущего), либо невозрастающий (каждый следующий элемент не больше предыдущего).
Является ли слайс монотонным?
Чтобы определить, является ли слайс монотонным, нужно проверить, либо он неубывающий (каждый следующий элемент не меньше предыдущего), либо невозрастающий (каждый следующий элемент не больше предыдущего).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Является ли слайс монотонным? Монотонная функция - функция одной переменной, определённая на некотором подмножестве действительных чисел, которая либо везде (на области своего определения) не убывает, либо везде не возрастает.
{1,7} - true {1,1} - true {3,3,1} - true {9,5,1} - true {23,5,23} - false
Ответ
Чтобы определить, является ли слайс монотонным, нужно проверить, либо он неубывающий (каждый следующий элемент не меньше предыдущего), либо невозрастающий (каждый следующий элемент не больше предыдущего).
Пример функции на Go, которая проверяет монотонность слайса целых чисел:
func isMonotonic(nums []int) bool {
if len(nums) <= 1 {
return true
}
increasing := true
decreasing := true
for i := 1; i < len(nums); i++ {
if nums[i] > nums[i-1] {
decreasing = false
}
if nums[i] < nums[i-1] {
increasing = false
}
}
return increasing || decreasing
}
Пример:
fmt.Println(isMonotonic([]int{1,7})) // true
fmt.Println(isMonotonic([]int{1,1})) // true
fmt.Println(isMonotonic([]int{3,3,1})) // true
fmt.Println(isMonotonic([]int{9,5,1})) // true
fmt.Println(isMonotonic([]int{23,5,23})) // false