https://leetcode.com/problems/bitwise-and-of-numbers-range/

1. Use Bitwise AND and check binary expression with only 1 bit:

  1. //12 ms 6.1 MB
  2. class Solution {
  3. public:
  4. int rangeBitwiseAnd(int m, int n) {
  5. if(m==0)
  6. return 0;
  7. if(m==n)
  8. return m;
  9. int result = 2147483647;
  10. int curr;
  11. for(int i = 0; i <= 30; i++){
  12. curr = (1 << i);
  13. if((curr >= m) && (curr <= n)){
  14. result = curr;
  15. break;
  16. }
  17. }
  18. while(m <= n){
  19. result = result & m;
  20. if(result == 0){
  21. return result;
  22. }
  23. if(m == 2147483647)
  24. break;
  25. else
  26. m++;
  27. }
  28. return result;
  29. }
  30. };