2831. 找出最长等值子数组

找出最长等值子数组

解法一: 滑动窗口

go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func longestEqualSubarray(nums []int, k int) int {
numListMap := make(map[int][]int)
for i, num := range nums {
numListMap[num] = append(numListMap[num], i)
}
ans := 0
for _, list := range numListMap {
n := len(list)
left := 0
right := 0
for right < n {
for list[right]-list[left]-right+left > k {
left++
}
ans = max(ans, right-left+1)
right++
}
}
return ans
}
作者

wuhunyu

发布于

2024-05-23

更新于

2025-01-15

许可协议