老六的邮票
题目描述
老六这个人爱好广泛,喜欢唱、跳、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)
本博客无代码,请谅解