老六的邮票

老六的邮票

题目描述

老六这个人爱好广泛,喜欢唱、跳、rap,
但其实他最感兴趣的还是收集邮票,
并且觉得自己收集的邮票种类越多越好。
一天,他闲来无事,把自己收集的 n 枚邮票都取了出来并摆成一排,
正当他为自己有这么多种邮票洋洋自得时,
他突然发现其中有些邮票是一样的,他的心情一下变得有些低落。
已经知道每张邮票上都有一个数字 aᵢ ,
数字一样的邮票表示是相同的邮票。
现在他想知道自己究竟有多少种不同的邮票,你能帮他算出来吗?

输入

第一行输入一个整数 n(1<=n<=50000),表示总共有多少枚邮票。
第二行输入n个整数,第 i(1<=i<=n)个整数 aᵢ(1<=aᵢ<=n)
表示第i枚邮票上的数字。

输出

只有一行,一个数字,表示老六有多少种不同的邮票。

样例输入

【样例输入1】

6
1 5 2 2 3 5

【样例输入2】

3
1 1 1

样例输出

【样例输出1】

4

【样例输出2】

1

题解:

题目大意:
读入一个正整数n,然后输入n个正整数,问里面有多少种不同的数。

思路:
可以开一个v[n]
数组,用来记录一个数有没有出现过,v数组一开始全部赋值为0。然后再定义一个sum变量,一开始为0
然后用一个循环从i=1,扫描到i=n,每次读入一个新的数a。
v[a]==0,则表示在前i-1个数中,数字a没有出现过,这是一个新的数,这时我们sum++,然后再把v[a]赋值为1
v[a]==1,则表示在前i-1个数中,数字a已经出现过了,并不是一个新的数,我们就什么都不做,读取下一个a。
最后输出sum即可。

时间复杂度:O(n)
空间复杂度:O(n)

本博客无代码,请谅解

AC

猜你喜欢

转载自blog.csdn.net/m0_45682806/article/details/107996692