Re: [問題] 數字連續化
※ 引述《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)
推
04/28 21:50, , 1F
04/28 21:50, 1F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章