201. 数字范围按位与
分析
- 按位与的性质
- 任何数字与
0
进行按位与,结果都是0
,即x & 0 = 0
- 相邻数字的按位与会减少
1
位的1
,例如:
- 任何数字与
|
|
计算 5 & 6 & 7 = 4
,可以看到最右侧的 1
被清除了
- 观察区间变化
- 若
left
和right
的二进制前缀相同,则它们的按位与结果保留这个前缀,后面的位全部补0
- 若
left
和right
的某一位出现了不同(即0->1
或1->0
),则从该位及其更低位的按位与结果必然为0
- 若
时间复杂度
由于整数的二进制表示最多 32
位,我们最多遍历 32
次,因此时间复杂度为 O(1)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|