1. 问题描述:
给定 n 个非负整数 a1,a2,…,an,请你计算其中共有多少个不同的正整数。
输入格式
第一行包含整数 n;第二行包含 n 个非负整数 a1,a2,…,an,保证至少存在一个正整数。
输出格式
一个整数,表示其中不同正整数的数量。
数据范围
前三个测试点满足 1 ≤ n ≤ 5;
所有测试点满足 1 ≤ n ≤ 100,0 ≤ ai ≤ 600;
输入样例1:
4
1 3 3 2
输出样例1:
3
输入样例2:
3
1 1 1
输出样例2:
1
输入样例3:
4
42 0 0 42
输出样例3:
1
来源:https://www.acwing.com/problem/content/description/4320/
2. 思路分析:
分析题目可以知道我们可以使用 set 或者哈希表来记录出现过的数字,set 和哈希表都可以用来去重,set 或者哈希表的大小就是不重复数字的数目;
3. 代码如下:
go:
package main
import "fmt"
func main() {
var n int
fmt.Scan(&n)
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
}
mp := make(map[int]int)
for i := 0; i < n; i++ {
if a[i] > 0 {
mp[a[i]] += 1
}
}
fmt.Println(len(mp))
}
python:
if __name__ == '__main__':
n = int(input())
a = list(map(int, input().split()))
mp = set()
for x in a:
if x > 0:
mp.add(x)
print(len(mp))