201. Bitwise AND of Numbers Range
problem description
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.
Example 1:
Example 2:
algorithm thought
这题可以从递归的角度思考问题。如果a>b,那么range(a,b)中的所有数字相与,最后一位bit肯定是0。这个很好证明,a&a+1 最后一位肯定是0。b>=a+1,range(a,b)中所有数相与,最后一位肯定为0.
确定好了最后一位了,前面的可以递归解决,让ab都右移一位,递归判断,直到最后,a<=b,这时候要么就是ab都为1或者是b为0.不管哪种情况,直接返回b就行了
code
algorithm analysis
这个算法最多执行32次,时间复杂度O(1)
Last updated