Является ли слайс монотонным?

Чтобы определить, является ли слайс монотонным, нужно проверить, либо он неубывающий (каждый следующий элемент не меньше предыдущего), либо невозрастающий (каждый следующий элемент не больше предыдущего).

Короткий ответ

Что ответить на собеседовании

Чтобы определить, является ли слайс монотонным, нужно проверить, либо он неубывающий (каждый следующий элемент не меньше предыдущего), либо невозрастающий (каждый следующий элемент не больше предыдущего).

Подробный разбор

Ответ с пояснениями

Условие

Является ли слайс монотонным? Монотонная функция - функция одной переменной, определённая на некотором подмножестве действительных чисел, которая либо везде (на области своего определения) не убывает, либо везде не возрастает.

{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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее