4317 不同正整数的个数(哈希表)

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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值