2831. 找出最长等值子数组
题目链接:2831. 找出最长等值子数组
代码如下:
class Solution
{
public:
int longestEqualSubarray(vector<int>& nums, int k)
{
vector<vector<int>> pos_lists(nums.size()+1);
for(int i=0;i<nums.size();i++)
{
int x=nums[i];
pos_lists[x].push_back(i-pos_lists[x].size());
}
int res=0;
for(auto& pos:pos_lists)
{
int left=0;
for(int right=0;right<pos.size();right++)
{
while(pos[right]-pos[left]>k)
{
left++;
}
res=max(res,right-left+1);
}
}
return res;
}
};