मान लीजिए कि हमारे पास एक रेंज [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