本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。
输入
每一行包含一个uid,遇到0时认为输入结束。
输入共包含N+1行,可认为是无序的。
输出
一个数字:去重后uid的数量M。
样例输入
12933
111111
59220
69433
59220
0
样例输出
4
数据范围
0<uid<2^63
对于30%的数据,0<N<100,000,0<M<100,000
对于100%的数据,0<N<1000,000,0<M<800,000
若使用string会存在超时的情况,一个字符是一个字节,占据空间更大
unsigned int 0~4294967295 int -2147483648~2147483647 unsigned long 0~4294967295 long -2147483648~2147483647 long long的最大值:9223372036854775807 long long的最小值:-9223372036854775808 unsigned long long的最大值:1844674407370955161
(long long占据64bit)
__int64的最大值:9223372036854775807 __int64的最小值:-9223372036854775808 unsigned __int64的最大值:18446744073709551615
代码如下:
#include #include <unordered_set> #include #include
using namespace std; int main() { long long num, res = 0; unordered_set dic; while (cin >> num) { if (num == 0) break; //if an element with a value equivalent to k is found, or zero otherwise. if (dic.count(num) == 0) { res++; dic.insert(num); } } cout << res << endl; return 0; }
————————————————
版权声明:本文为CSDN博主「牛奶蜜糖」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/gp2299/article/details/70237114
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。