Задача: Подмассив с фиксированными границами
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
}