Re: [闲聊] 每日leetcode

楼主: oinishere (是oin捏)   2024-03-30 22:13:24
※ 引述 《JIWP (神楽めあ的钱包)》 之铭言:
:  
: 这题acceptance rate有57%应该算是hard里面比较简单的
:  
: 992. Subarrays with K Different Integers
:  
: 有一个array nums、整数 k
:  
: 定义good subarrays:
:  
: 当一个subarray里有k种不同的整数,那这个sub array就是good subarray
:  
我的想法也差不多
不过一开始我是用vextor把每个数字出现过的index都纪录下来
后来TLE
然后才发现只要记录可以缩的window 的最右边就可以了
要删除那种数字的时候就慢慢移过去
刚好对到的话代表他是最后一个
直接删除就好
姆咪
然后这是画图跟咩阿
https://i.imgur.com/PasXQAM.jpg
class Solution {
public:
int subarraysWithKDistinct(vector<int>& nums, int k) {
int len = nums.size();
int res = 0;
unordered_map<int,int> paper;
int l = 0;
int r = 0;
for(; r < len ; r ++)
{
paper[nums[r]] = r;
while(paper.size() > k)
{
if(paper[nums[l]] == l)
{
paper.erase(nums[l]);
}
l++;
}
if(paper.size() == k)
{
int plus = 200000;
for(auto pp : paper)
{
plus = min(pp.second,plus);
}
res += plus - l + 1;
}
}
return res;
}
};
作者: JIWP (JIWP)   2023-03-30 22:13:00
楼主: oinishere (是oin捏)   2024-03-30 22:15:00
你没有
作者: SecondRun (雨夜琴声)   2024-03-30 22:24:00
钱钱

Links booklink

Contact Us: admin [ a t ] ucptt.com