请考虑以下代码段:
const obj1 = {1:1, 2:1, 3:1}
const obj2 = {1:1, 4:1, 9:1}
for(let key in obj1){
if(!(key ** 2 in obj2)) return false
}
由于以下原因,该算法的Big O是否可以视为O(n)或应为O(n ^ 2)?
if(!(key ** 2 in obj2))
被认为遍历obj2的所有项(搜索)
**注意:假设obj1和obj2的长度相等
JavaScript对象实际上是哈希表,因此查找键为O(1)。
因此,总算法为O(n)。
我怀疑in
不会遍历所有项,但是像哈希表一样工作。所以我要说它的O(n)。