题解
与指定数字相同的数的个数
1 条题解
-
0
解题思路
题目先给一个总数 n 和一个指定的数字 num,再给 n 个整数,要统计这 n 个数中有多少个正好等于 num。
这是典型的"计数"问题,思路很简单:准备一个计数器 cnt,先清成 0;然后循环 n 次,每读入一个数 a,就判断 a 是否等于 num,相等就让 cnt 加 1。循环结束后输出 cnt。
注意判断相等要用"=="(两个等号),它表示"等于",而单个"="是赋值,把右边的值存进左边的变量,两者千万不能搞混。
为什么计数器要先清 0?因为开始统计之前,一个符合要求的数都还没见到,数量当然是 0。
参考代码
#include <iostream> using namespace std; int main() { int n, num; // n:整数的个数;num:指定的数字 cin >> n >> num; // 读入 n 和 num int cnt = 0; // cnt:与 num 相同的数的个数,先清 0 for (int i = 1; i <= n; i++) { // 循环读入 n 个数 int a; // a:当前读入的一个整数 cin >> a; // 读入这个数 if (a == num) { // 如果它和指定的数字相同 cnt = cnt + 1; // 计数器加 1 } } cout << cnt << endl; // 输出统计结果 return 0; }复杂度分析
循环恰好执行 n 次,每次做一次读入和一次比较,时间复杂度是 O(n),其中 n 是整数的个数。只用了 n、num、cnt、i、a 几个变量,空间复杂度 O(1)。
- 1