题目
统计数组中各元素出现次数(数值范围较小时)
思路
读数组后,cnt[v] 对合法下标 v 自增;再遍历值域输出 v: cnt[v],或只输出出现过的值。
解题分析
值域 0~100 时用计数数组 cnt[v] 比排序再扫更简单,O(n) 时间。值域很大时改用 map 或排序后线性扫重复段。
完整程序
import java.io.*;
public class Main {
public static void main(String[] args) {
int n = 6;
int[] cnt = new int[101];
for (int i = 0; i < n; i++) {
int x = 1;
if (x >= 0 && x <= 100) cnt[x]++;
}
for (int v = 0; v <= 100; v++)
if (cnt[v] > 0) System.out.println(v + ":" + cnt[v]);
}
}
运行示例
输出:
1:2
2:3
3:1