问题描述
给定两个整数,第一个数小于第二个数,要求求出这两个数(包含)之间的所有数的二进制数 “与” 运算后的结果。题目链接:**点我**
样例输入输出
输入:[5, 7]
输出:4
说明:5 的二进制数是 101,6 的二进制数是110,7 的二进制数是 111,三个二进制数求与运算后是 100,对应 10 进制数 4
输入:[0, 1]
输出:0
说明:0 的二进制数是 0,1 的二进制数是 1,两者求与运算后是 0,对应 10 进制数 0
问题解法
此题参考 https://leetcode-cn.com/problems/bitwise-and-of-numbers-range/solution/shu-zi-fan-wei-an-wei-yu-by-leetcode-solution/。从两个数围起来的范围数进行分析,对这些数进行求与运算,实际上是求边界数的二进制数的公共前缀。因此只需要将边界值的数向右移位直到两者相等,再向左移动对应的位数即可得到答案。代码如下
1 | class Solution |