本文主要是介绍Bitwise AND of Numbers Range问题及解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.
示例:given the range [5, 7], you should return 4.
问题分析:
寻找n和m的最左侧的公共位。关键点在于利用n = n & (n - 1) ( n > m) 去寻找n和m的最左侧公共位。
过程详见代码:
class Solution {
public:int rangeBitwiseAnd(int m, int n) {while(m<n) n = n & (n-1);return n;}
};
这篇关于Bitwise AND of Numbers Range问题及解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!