@[ZOECCCCCCCC](/user/1121807)
请初始化 `max=0;`
另外 `int k[100005] = {0};` 不是一种非常靠谱的赋初值方式,建议采用 `int k[100005];memset(k,0,sizeof(k));`。
by Terrible @ 2023-12-07 19:36:56
@[Terrible](/user/195942) 谢谢,刚刚发现了,输入第二组数据的时候 max值没变
我不是很懂洛谷的规矩,问题解决后是不是要把帖子删掉?
by ZOECCCCCCCC @ 2023-12-07 19:42:32
@[ZOECCCCCCCC](/user/1121807) 如果你认为帖子没有很大参考价值的话可以删掉,并没有说解决后必须删帖的说法。
by Terrible @ 2023-12-07 19:46:40
@[Terrible](/user/195942) OK,谢谢
by ZOECCCCCCCC @ 2023-12-07 19:47:49
@[Terrible](/user/195942)
大佬看了你的回复我受益匪浅,但是我对于这个双指针过不去也很头疼
```cpp
// Problem:
// 唯一的雪花 Unique Snowflakes
//
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/UVA11572
// Memory Limit: 0 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<iostream>
#include<algorithm>
//#include<cstdio>
#include<map>
#define ll long long
#define endl '\n'
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>(b);i--)
#define N 1000100 //1e6+100
using namespace std;
int a[N];
map<int,int>m;
void solve(){
int n;
cin>>n;
rep(i,1,n) cin>>a[i];
m.clear();
int l=1,r=1;
m[a[l]]=1;
int res=1;
while(r<n){
if(m[a[r+1]]==0)m[a[++r]]++;
else {
while(m[a[r+1]]!=0&&l<=r) m[a[l++]]--;
r++;
}
res=max(res,r-l+1);
}
cout<<res<<endl;
}
int main(){
int _;
cin>>_;
while(_--){
solve();
}
return 0;
}
```
by lightme @ 2024-01-29 11:49:33
现在发现栈区内给数组用花括号`{}`赋值,GCC 编译出来,似乎会用 memset 给没有注明具体值的内存赋值,所以应该没有太大的问题,之前说的结论可以不理会了。
by Terrible @ 2024-01-29 12:11:00
@[lightme](/user/940317)
```cpp
while(r<n){
while(m[a[r+1]]!=0&&l<=r) m[a[l++]]--;
m[a[++r]]++;
res=max(res,r-l+1);
}
```
by Terrible @ 2024-01-29 12:18:05
@[Terrible](/user/195942) 可以给我讲述一下我的源码哪有问题吗
by lightme @ 2024-01-29 12:32:22
@[Terrible](/user/195942)
我知晓了,下面移动完指针也需要赋值,你这样直接并一步也是ok的
谢谢
by lightme @ 2024-01-29 12:35:57