文章作者:Tyan
博客:noahsnail.com | 优快云 | 简书
1. Description

2. Solution
- Version 1
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int mask = INT_MAX;
while((m & mask) != (n & mask)) {
mask <<= 1;
}
return m & mask;
}
};
- Version 2
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int count = 0;
while(m != n) {
m >>= 1;
n >>= 1;
count++;
}
return m << count;
}
};
- Version 3
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
while(m < n) {
n &= n - 1;
}
return n;
}
};

本文介绍了三种不同的方法来解决LeetCode上关于区间内所有数字按位与的问题。方法一使用了位掩码来逐位比较两个边界值;方法二通过右移直到两个数相同,再左移恢复;方法三则不断将较大数与自身减一的结果进行按位与操作,直至它不大于较小数。这些技巧展示了位运算的强大和灵活性。
1525

被折叠的 条评论
为什么被折叠?



