【发布时间】:2016-10-26 06:44:40
【问题描述】:
函数 NumberComplement(num) 接受一个十进制数,将其转换为二进制数,然后将每个二进制数反转,然后将反转的二进制数转换回十进制数。
我的解决方案是
NumberComplement(num){
let bin= num.toString(2).split('').map( x => 1-x ).join('')
return parseInt(bin,2)
}
这个函数的时间复杂度是多少?为什么?
(让我困惑的部分是map函数,其中num已经从整数转换为由0和1组成的数组,我们知道数组的长度是log(num)+1,所以函数迭代 log(num)+1 次,这使得时间复杂度为 O(log(n))?........还是我想多了?只是 O(n)?
非常感谢您的宝贵时间!
【问题讨论】:
-
是
O(1).... -
@zerkms 为什么它是恒定的?我正在将 num 转换为数组并遍历整个数组.....
-
它是每个
split、map和join的53次迭代的上限 -
@zerkms 谢谢!我现在明白了……在谷歌搜索了 JS 中最大的精确整数值之后……
标签: javascript algorithm time-complexity