ধরুন আমাদের কাছে সাজানো অক্ষরের অক্ষরগুলির একটি তালিকা রয়েছে। এটিতে শুধুমাত্র ছোট হাতের অক্ষর রয়েছে, এখন আমাদের কাছে একটি লক্ষ্য অক্ষর t আছে, আমাদের তালিকার সবচেয়ে ছোট উপাদানটি খুঁজে বের করতে হবে যা প্রদত্ত লক্ষ্যের চেয়ে বড়।
এবং চিঠিগুলিও চারপাশে মোড়ানো। সুতরাং, যদি লক্ষ্য হয় t ='z' এবং অক্ষর =['a', 'b'], উত্তর হবে 'a'।
সুতরাং, যদি ইনপুট হয় ["c", "f", "j"], t ='a', তাহলে আউটপুট হবে 'c'।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- l :=0
- r :=অক্ষরের আকার - 1
- যখন l <=r, do
- মধ্য :=(l + r) / 2 পূর্ণসংখ্যা হিসাবে
- যদি অক্ষর[মধ্য]> টার্গেট, তাহলে
- r :=মধ্য -1
- অন্যথায়,
- l :=মধ্য + 1
- রিটার্ন অক্ষর[l মোড সাইজ অক্ষর]
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def nextGreatestLetter(self, letters, target): l = 0 r = len(letters) - 1 while l <= r: mid = (l + r)//2 if letters[mid] > target: r = mid -1 else: l = mid + 1 return letters[l % len(letters)] ob = Solution() print(ob.nextGreatestLetter(["c", "f", "j"], "a"))
ইনপুট
["c", "f", "j"], "a"
আউটপুট
c