मान लीजिए हमारे पास क्रमबद्ध वर्णों की एक सूची है। इसमें केवल लोअरकेस अक्षर हैं, अब हमारे पास एक लक्ष्य अक्षर t है, हमें सूची में उस सबसे छोटे तत्व को ढूंढना है जो दिए गए लक्ष्य से बड़ा है।
अक्षर रैप अराउंड भी करते हैं। इसलिए, यदि लक्ष्य t = 'z' है और letters = ['a', 'b'], तो उत्तर 'a' है।
उदाहरण के लिए, यदि इनपुट ["c", "f", "j"], t = 'a' है, तो आउटपुट 'c' होगा।
हल करने के चरण
- l := 0
- r := letters का आकार - 1
- जब तक l <= r:
- mid := (l + r) / 2 पूर्णांक के रूप में
- यदि letters[mid] > target, तो:
- r := mid - 1
- अन्यथा:
- l := mid + 1
- letters[l % letters का आकार] वापस करें
उदाहरण
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