func longestEqualSubarray(nums []int, k int) int {
posLists := make([][]int, len(nums) + 1)
ans := 0
for i, x := range nums {
posLists[x] = append(posLists[x], i - len(posLists[x]))
}
for _, pos := range posLists {
if len(pos) <= ans {
continue
}
left := 0
for right, p := range pos {
for p - pos[left] > k {
left ++
}
ans = max(ans, right - left + 1)
}
}
return ans
}