C++ 中數字範圍的按位 AND


假設我們有一個範圍 [m, n],其中 0 <= m <= n <= 2147483647。我們必須找出此範圍內所有數字的按位 AND,包括範圍本身。因此,如果範圍是 [5, 7],則結果將為 4。

為了解決此問題,我們將按照以下步驟進行 -

  • i := 0

  • 當 m 不等於 n 時,

    • m := m/2,n := n / 2,將 i 增加 1

  • 左移 i 次後返回 m。

示例 (C++)

讓我們看看以下實現以獲得更好的理解 -

 即時演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int rangeBitwiseAnd(int m, int n) {
      int i = 0;
      while(m != n){
         m >>= 1;
         n >>= 1;
         i++;
      }
      return m << i;
   }
};
main(){
   Solution ob;
   cout << (ob.rangeBitwiseAnd(5,7));
}

輸入

5
7

輸出

4

更新於: 02-05-2020

788 次瀏覽

啟動你的 職業

完成課程以獲得認證

開始
廣告
© . All rights reserved.