离散化
# 离散化
// arr[i] 为初始数组,下标范围为 [1, n]
for (int i = 1; i <= n; ++i) // step 1
tmp[i] = arr[i];
std::sort(tmp + 1, tmp + n + 1); // 排序
int len = std::unique(tmp + 1, tmp + n + 1) - (tmp + 1); // 去重
for (int i = 1; i <= n; ++i)
arr[i] = std::lower_bound(tmp + 1, tmp + len + 1, arr[i]) - tmp; //找这个数的次序来代表中国数的值
1
2
3
4
5
6
7
2
3
4
5
6
7
上次更新: 2024/09/14, 12:53:16