颠倒给定的32位无符号整数的二进制位。
思路: n > 0 的情况下,获取最右边的那位,进行移位,累加到结果数组中
.<< 左移运算符,num << 1,相当于 num 乘 2
.>> 右移运算符,num >> 1,相当于 num 除 2
.>>> 无符号右移,忽略符号位,空位都以 0 补齐
- 时间复杂度O(1), 空间复杂度O(1)
- Runtime: 80 ms, faster than 85.54%
- Memory Usage: 40.3 MB, less than 87.95%
/**
* @param {number} n - a positive integer
* @return {number} - a positive integer
*/
var reverseBits = function(n) {
let res = 0;
let pow = 31;
while (n > 0) {
let right = n & 1;
res = res + (right << pow);
pow--;
n = n >>> 1
}
// return res;
return res >>> 0;
};
网友评论