颠倒二进制位
题目链接: https://leetcode.cn/problems/reverse-bits
解题思路:
通过遍历
32
位二进制位,从右往左翻转二进制位在循环中,将结果变量
res
左移一位,然后将num
的最后一位与1
进行按位或运算,将结果存储到res
中最后,将
num
右移一位,继续进行循环
func reverseBits(num uint32) uint32 {
var res uint32
// 遍历 32 位二进制位
for i := 0; i < 32; i++ {
res <<= 1 // 将结果变量 res 左移一位
res |= num & 1 // 将 num 的最后一位与 1 进行按位或运算,将结果存储到 res 中
num >>= 1 // 将 num 右移一位
}
return res
}
复杂度分析
时间复杂度: 时间复杂度是 ,因为函数只需要遍历
32
位二进制位,进行位运算空间复杂度: 空间复杂度是 ,因为函数只使用了常数个变量来存储中间结果,没有使用额外的空间
最后更新于
这有帮助吗?