मान लीजिए कि हमारे पास एक रेंज [m, n] है जहां 0 <=m <=n <=2147483647. हमें बिटवाइज और इस रेंज की सभी संख्याओं को शामिल करना है। तो अगर रेंज [5, 7] है, तो परिणाम 4 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मैं :=0
-
जबकि m, n नहीं है, तब
-
एम:=एम/2, एन:=एन/2, मैं 1 से बढ़ाएँ
-
-
मैं बार-बार बाईं ओर शिफ्ट होने के बाद मी लौटाता हूं।
उदाहरण(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