Задача: Подмассив с фиксированными границами

Задача: Подмассив с фиксированными границами

https://t.me/Golang_google

Условие: дается целочисленный массив nums и два целых числа minK и maxK.

Подмассив nums с фиксированной привязкой - это подмассив, который удовлетворяет следующим условиям:

Минимальное значение в подмассиве равно minK.

Максимальное значение в подмассиве равно max.

Возвращает количество подмассивов с фиксированной привязкой.

Подмассив - это непрерывная часть массива.


Пример:


Ввод: nums = [1,3,5,2,7,5], minK = 1, maxK = 5

Вывод: 2

Ввод: nums = [1,1,1,1], minK = 1, maxK = 1

Вывод: 10


Решение:

Go

func min(a, b int) int {
    if a < b {return a}
    return b
}

func max(a, b int) int {
    if a > b {return a}
    return b
}

func countSubarrays(nums []int, minK int, maxK int) int64 {
    var ans int64 = 0
    var minNumIndex, maxNumIndex, badNumIndex int = -1, -1, -1
    for i, num := range nums {
        if num < minK || num > maxK {badNumIndex = i}
        if nums[i] == maxK {maxNumIndex = i}
        if nums[i] == minK {minNumIndex = i}
        ans += int64(max(0, min(minNumIndex, maxNumIndex) - badNumIndex))
    }
    return ans
}


Report Page