In this Leetcode Bitwise AND of Numbers Range problem solution we have Given two integers left and right that represent the range [left, right], return the bitwise AND of all numbers in this range, inclusive.
Problem solution in Python.
import math class Solution: def rangeBitwiseAnd(self, left: int, right: int) -> int: ans = 0 if left == 0 or right == 0: return 0 while left and right: left_most_sbit = int(math.log2(left)) right_most_sbit = int(math.log2(right)) if left_most_sbit==right_most_sbit: ans = ans | 1<<left_most_sbit left = left - (1<<left_most_sbit) else: break right = right - (1<<right_most_sbit) return ans
Problem solution in Java.
public int rangeBitwiseAnd(int m, int n) { int result = 0, num, i; for (i=31;i>=0;i--) { num = 1 << i; if ((num & n) > 0) { if ((num & m) > 0) result += num; else break; } } return result; } }
Problem solution in C++.
class Solution { public: int rangeBitwiseAnd(int m, int n) { int i = 0; while(m!=n){ m=m>>1; n=n>>1; ++i; } return m<<i; } };
Problem solution in C.
int rangeBitwiseAnd(int m, int n){ int sum=0,val1=m,val2=n; long int k=1; while(m>0){ if(m&1 && n&1){ if(val2-val1<k) sum+=k; } m=m>>1; n=n>>1; k=k<<1; } return sum; }
0 Comments