您如何以有效的方式創建反向查找陣列?
例如 [5, 3, 1, 4, 2] => [3, 5, 2, 4, 1]
顯然一個簡單的方法是:
const input = [5, 3, 1, 4, 2];
const output = [];
for (i = 0; i < input.length; i ) {
output[input[i] - 1] = i 1;
}
uj5u.com熱心網友回復:
你的方法是 O(n):我不認為可以打敗
您確實必須遍歷輸入中的每個元素(讀取它)和輸出的每個元素(寫入它):無法擺脫!
我唯一建議稍微加快速度的是預先調整輸出陣列的大小。
const input = [5, 3, 1, 4, 2];
const output = new Array(input.length);
input.forEach(
(value, i) => output[value - 1] = i 1
)
console.log(output)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/347363.html
標籤:javascript 数组 排序
上一篇:Javascript比較單個物件陣列中的結果,如果值在同一物件陣列中匹配,則追加
下一篇:確定給定點是否會創建一個島嶼
