解题思路:
这题的行号我没搞懂有什么用,因为票号连续的,很容易就能用散列表找出来,我们的解题思路:
以票号为 Key 建立 hash 表 → 查找起始票号 → hash值为 0 就是缺失票号,为 2 就是重复
票号 → 找到之后 break 即可,这个方法避免了 sort 。
参考代码:
#include<iostream> using namespace std; int main() { int temp, hash[100000] = { 0 }; cin >> temp; /* 建立hash表 */ while (cin >> temp) hash[temp]++; int m = -1, n = -1, start; /* 查找起始位置 */ for (start = 0; start < 100000; start++) if (hash[start] != 0) break; for (int index = start; index < 100000; index++) { if (hash[index] == 0) m = index; else if (hash[index] == 2) n = index; if (m != -1 && n != -1) break; } cout << m << ' ' << n << endl; return 0; }
0.0分
24 人评分
有一点不明白,怎么算是输入结束呢?没有让他结束呀,我自己用测试用例跑的,结束不了出不来结果;望回复
HzuWHF 2021-03-27 22:17:11 |
cin读入到输入文件结尾的EOF符号就会返回0,就会正常退出了,在命令行调试的时候可以用ctrl+z模拟这个结束符号
程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。 C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。
使用sstream中的stringstream将字符串分隔开,然后存入数组,会出现33%的错误,这是为什么呢??
有一点不明白,怎么算是输入结束呢?没有让他结束呀,我自己用测试用例跑的,结束不了出不来结果;望回复
Biggest Number (C++代码)回溯法浏览:1599 |
C语言训练-计算1977!* (C++代码)浏览:843 |
哥德巴赫曾猜测 (C语言代码)浏览:985 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:659 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:761 |
C语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:903 |
【计算球体积】 (C语言代码)浏览:1101 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:535 |
母牛的故事 (C语言代码)浏览:715 |
文科生的悲哀 (C语言代码)浏览:1392 |