📅  最后修改于: 2023-12-03 14:55:38.191000             🧑  作者: Mango
在 CPP 中,有时我们需要统计某个元素在数组中出现的次数。这时,可以使用标记数组来解决问题。本文将介绍如何使用 TypeScript 实现这一操作。
标记数组,也称计数排序,是一种常用的数组操作方式,常用于统计元素出现次数。其实现方式为:
使用 CPP 实现标记数组,代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
const int maxn = 1000000; // 数组长度上限
int a[maxn], b[maxn]; // 原数组和标记数组
int main() {
int n;
cin >> n; // 输入数组长度
int max_value = 0; // 数组元素最大值
for (int i = 0; i < n; i++) {
cin >> a[i];
max_value = max(max_value, a[i]);
}
for (int i = 0; i <= max_value; i++) {
b[i] = 0; // 初始化标记数组
}
for (int i = 0; i < n; i++) {
b[a[i]]++; // 标记数组计数
}
for (int i = 0; i <= max_value; i++) {
if (b[i] != 0) {
cout << i << "出现了" << b[i] << "次" << endl;
}
}
return 0;
}
使用 TypeScript 实现标记数组,代码如下:
const countSort = (arr: number[]): void => {
const max = Math.max(...arr);
const bucket: number[] = Array(max + 1).fill(0);
for (let i = 0; i < arr.length; i++) {
bucket[arr[i]]++;
}
let k = 0;
for (let i = 0; i < bucket.length; i++) {
while (bucket[i] > 0) {
arr[k++] = i;
bucket[i]--;
}
}
};
const a: number[] = [1, 4, 2, 5, 2, 3];
countSort(a);
console.log(a);
在 TypeScript 中,我们可以使用泛型来支持不同类型的数组。以上代码中,泛型为 number[]
。
本文介绍了标记数组的概念和 CPP、TypeScript 中的代码实现。标记数组是一种简单而有效的算法,常用于统计元素出现次数等数组操作中。在实际开发中,可以根据具体情况选择不同的实现方式。