作者adrianshum (Alien)
看板C_and_CPP
标题Re: [问题] 数字连续化
时间Tue Apr 28 17:55:21 2009
※ 引述《maplefog (枫雾)》之铭言:
: 我目前有个vector< vector<int> >
: 内容大概是这样
: 0 1
: 0 3
: 3 7
: 7 9
: 9 10
: 10 15
: ...
: 我想把数字连续化,也就是从0 1 2 3 4 ...这样
: 上面那个例子会变成
: 0 1
: 0 2
: 2 3
: 3 4
: 4 5
: 5 6
: 请问除了暴力法以外还有什麽方法可以比较快速完成,谢谢
其实我看不明白你上面的例子和下面的结果的关系是什麽
和 vector< vector<int > > 的关系又是什麽
把你的问题这样简化可以吗?:
有一堆不连续的数字
然後把它们依本身值的顺序, 替换成连续数字, 对吗?
写一段 psuedo code 吧:
vector<int> values = { 1 , 3 , 4, 3, 9, 5 , 2 };
map<int, int> valueMap();
// 把现有值塞进 map, 以现有值作 key
for each (v in values) {
valueMap[v] = 0;
}
// 以新值为 value
i = 0;
for each (entry in valueMap) {
entry.second = ++i;
}
// 由 value map lookup 新值并取代之
for each (v in values) {
v = valueMap[v];
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82
※ 编辑: adrianshum 来自: 202.155.236.82 (04/28 17:55)
1F:推 maplefog:感谢。 第一行强调那个是因为我是用vector实现二维阵列 04/28 21:50