我正在學習大 O 符號并解決一些問題,因為我對這個主題很陌生,我想知道這個演算法的復雜性。
function findSum(arr,value){
const set = new Set();
for (let val of arr) {
set.add(val);
}
const res = [];
for (let val of set) {
const target = value - val
if (set.has(target)) {
res.push(val, target);
break;
}
}
return res.length > 0 ? res : false;
}
uj5u.com熱心網友回復:
讓我們分解一下:
set.add()是一個O(1)操作,因此第一部分顯然是O(n),n長度為array。
set.has()也是O(1)(基于散列的資料結構的重點是啟用恒定時間查找),res.push()(附加到陣列)也是如此。這意味著第二部分(遍歷集合)也是O(n).
因此整個函式是O(n)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532367.html
標籤:算法时间复杂度大哥
