ধরুন আমাদের একটি রেঞ্জ আছে [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