原题链接:https://leetcode.cn/problems/continuous-subarrays/
func continuousSubarrays(nums []int) int64 {
n := len(nums)
mp := make(map[int]int)
left, res := 0, 0
for right := 0; right < n; right++ {
num := nums[right]
mp[num]++
for {
ma, mi := num, num
for k := range mp {
ma = max(ma, k)
mi = min(mi, k)
}
if ma - mi <= 2 {
break
}
tmp := nums[left]
mp[tmp]--
if mp[tmp] == 0 {
delete(mp, tmp)
}
left++
}
res += right - left + 1
}
return int64(res)
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func min(a, b int) int {
if a < b {
return a
}
return b
}