题目描述
第一次出现的数中最小的
样例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int n;
int nums[200010], cnt[200010];
int main(){
int times = 0;
scanf("%d", ×);
while(times --){
scanf("%d", &n);
memset(cnt, 0, (n+1) * 4);
for(int i = 0; i < n; i++){
scanf("%d", &nums[i]);
cnt[nums[i]]++;
}
int res = -1;
for(int i = 0; i < n; i++){
if(cnt[nums[i]] == 1){
if(res == -1 || nums[res] > nums[i]){
res = i;
}
}
}
if(res != -1) res++;
printf("%d\n", res);
}
return 0;
}
```
为什么memset是4*(n+1)呢
写法应该是sizeof xx,但是我们知道一个int是4个字节
所以4 * (实际的数组大小)就是我们当前需要申请的空间大小
嗯嗯感谢,我之前没注意到memset是按位置零的
好滴