LeetCode 2831 找出最长等值子数组
🟠 中等偏上
https://leetcode.cn/problems/find-the-longest-equal-subarray/description/
思路
先遍历一遍,得到相同的数的位置,再在这些位置上进行滑动窗口。
class Solution {
public:
int longestEqualSubarray(vector<int>& nums, int k) {
unordered_map<int,vector<int>> Map;
for(int i=0;i<nums.size();i++){
Map[nums[i]].push_back(i);
}
int res = 0;
for(auto [key,pos]:Map){
int left = 0;
for(int i = 0;i<pos.size();i++){
while(i<pos.size()&& (pos[i]-pos[left]+1)-(i-left+1)>k){
left++;
}
res = max(i-left+1,res);
}
}
return res;
}
};