【发布时间】:2021-12-30 11:53:54
【问题描述】:
我对 Big O 很陌生,我不确定以下代码的时间复杂度是多少:
const items = [
{type: 'phone', name: 'iPhone', color: 'gold'},
{type: 'phone', name: 'Samsung', color: 'gold'},
{type: 'laptop', name: 'Chromebook', color: 'gray'},
{type: 'tv', name: 'LG', color: 'gray'},
{type: 'gooo', name: 'LG', color: 'silver'},
{type: 'phone', name: 'Nokia', color: 'gold'}
];
items.filter(item => {
for(let i=0; i < Object.keys(item).length; i++) {
console.log('item is', Object.keys(item)[i])
}
})
我们可以说这是O(i + c),其中i 是items,c 是常量console.log?或者我们需要说O(i * j + c) 之类的话,其中j 是个人item,即{type: 'phone', name: 'iPhone', color: 'gold'}
谁能帮帮我...提前谢谢你!
【问题讨论】:
-
您要归档什么?因为你的过滤方法并没有真正过滤任何东西
-
它实际上有点复杂,因为您调用
Object.keys()的方式本身具有 O(n) 的复杂性(您在for条件下每次迭代调用一次并再次调用它在 console.log 中)请参阅:Object.keys() complexity?
标签: javascript filter time-complexity big-o