Bitwise AND of Numbers Range Total Accepted: 2859 Total Submissions: 11145

来源:互联网 发布:昆明程序员工资 编辑:程序博客网 时间:2024/05/22 10:24

题目来自于leetcode

https://leetcode.com/problems/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.

For example, given the range [5, 7], you should return 4.

Credits:
Special thanks to @amrsaqr for adding this problem and creating all test cases.

class Solution {public:    int rangeBitwiseAnd(int m, int n) {                int*arraym=new int[32]();        int*arrayn=new int[32]();        int i=0;        while(m!=0)         {             arraym[i]=m%2;             m/=2;             i++;         }         i=0;        while(n!=0)         {             arrayn[i]=n%2;             n/=2;             i++;         }         int j;         for(j=31;j>=0;j--)         {             if(arrayn[j] !=arraym[j])            break;         }         for(;j>=0;j--)           arraym[j]=0;           int expon=1;           int ans=arraym[0];         for(j=1;j<32;++j)         {             expon*=2;             ans+=arraym[j]*expon;         }       return ans;      }};


0 0
原创粉丝点击