是的,时间的复杂性是 O(n^2) - 例如,如果 arr 有10项,算法需要在完成前进行~100次比较。
O(n^2)
arr
空间复杂性是 O(n) 。例如,考虑外部的最后一次迭代 .filter - result 这几乎完成了构建需要 O(n) 当时的空间(最坏情况;相当于输入的一侧) arr )。回调内部的内部数组被过滤(然后将有它的 length 检查,并返回)也将是最糟糕的情况,输入的一面 n 。因此,目前在任何时间点使用的最大空间是 O(2n) ,相当于 O(n) 。
O(n)
.filter
result
length
n
O(2n)
我认为你对时间复杂度是正确的,由于两个嵌套循环,它是O(n ^ 2)。
IMO空间复杂度为O(n),因为您只需要n个单位的空间来保留阵列,并且不会分配额外的内存。