最后更新于1年前
这有帮助吗?
题目链接:
对于每个数字,将其与 right 进行按位与运算,将结果存储到 right 中。然后,将 right 减 1,再次进行循环。这样可以保证 right 中存储的是给定范围内所有数字的按位与
right
1
func rangeBitwiseAnd(left int, right int) int { for left < right { right &= (right - 1) } return right }
时间复杂度: 时间复杂度是 O(logn)O(\log n)O(logn),其中 nnn 是 left 和 right 的二进制表示中的位数
left
空间复杂度: 空间复杂度是 O(1)O(1)O(1)