数字哈希映射函数,离散化-CSDN博客

44 阅读1分钟

给与一个数组,元素个数不多,大概100万。但是每个元素大小可以很大(long long范围内)。

比如 8 10 -6 10。哈希映射后为2 3 1 3.

接口:给与一个数组a[1:n]。返回哈希后的数组。

\

		bool cmp(int x, int y) {
			return a[x] < a[y];
		}

		sort(id + 1, id + n + 1, cmp);

		int pre = a[id[1]]; a[id[1]] = 1;
		for (int i = 2, cur = 1; i <= n; ++i) {
			if(a[id[i]] != pre) {
				pre = a[id[i]];
				a[id[i]] = ++cur;
			}else a[id[i]] = cur;
		} 

写题中的副产品。
\