ঠিক আছে, আপনি উত্তরটি খুঁজে পেতে l এবং r এর XOR ব্যবহার করতে পারেন ।
ধরুন, l = 4 এবং r = 6।
l = 100, r = 110 (এই সংখ্যার বাইনারি সমতুল্য)
l⊕r = 0 10
এর অর্থ কী, আপনি যে সর্বাধিক মানটির সন্ধান করছেন তা অবশ্যই তার প্রথম বিট (এমএসবি) শূন্য হিসাবে থাকবে। (এটা সম্পর্কে চিন্তা করুন, এটা এমনকি সম্ভব আপনার সর্বোচ্চ মান একটি আছে জন্য 1 পরিবর্তে প্রথম কিছুক্ষনের মধ্যে? যদি 01010 এবং 00101, XOR হতো = ছিল 01 111 অর্থাত সর্বোচ্চ। 01010 এবং 00101 মধ্যে মান স্পষ্টভাবে থাকবে বাম থেকে তাদের দ্বিতীয় বিটের একটি 1 , বাম থেকে দ্বিতীয় বিটের আগে বাম থেকে প্রথম বিটে একটি 1 পাওয়া সম্ভব নয় )
সুতরাং, সর্বাধিক সন্ধান করতে আপনার কাছে বাকি 2 বিট রয়েছে with আমরা জানি যে, যখন আমাদের সাথে এন বিট থাকে তখন সর্বাধিক সম্ভাব্য মান = 2 এন −1, সুতরাং এই ক্ষেত্রে উত্তরটি 2 2 -1 = 4-1 = 3 হবে।
উপরের উদাহরণ থেকে আমরা এর জন্য একটি সাধারণ অ্যালগরিদম তৈরি করতে পারি।
ধাপ 1 NUM = বিট সংখ্যা সর্বোচ্চ প্রতিনিধিত্ব করা প্রয়োজন ( ঠ , দ )
পদক্ষেপ 2. মাঝামাঝি = ঠ ⊕ R
ধাপ 3 পিওএস = প্রথম-বিট অবস্থান থেকে সেট করা হয় যে, বাম মাঝামাঝি (0 ভিত্তিক ইন্ডেক্স)
ধাপ 4 ঢ = NUM - পিওএস
পদক্ষেপ 5. উত্তর = 2 এন −1
সময়ের জটিলতা = O (n)
j
মাধ্যমে চালানোi+1..r
এবংi
মাধ্যমে চালানোl...r-1
ভালো হবে।