ได้รายการตัวอักษร letters เรียงลำดับแล้ว (พิมพ์เล็ก) และตัวอักษรเป้าหมาย target หาตัวอักษรในรายการที่มากกว่า target และมีค่าน้อยที่สุด รายการวนรอบ (wrap around) คือถ้า target='z' และ letters=['a','b'] → คำตอบ 'a'
ตัวอย่าง
letters = ["c","f","j"], target = 'a' → 'c'
ขั้นตอนการแก้ปัญหา (Binary Search)
l = 0, r = len(letters) - 1- วน
while l <= r:mid = (l + r) // 2- ถ้า
letters[mid] > target:r = mid - 1 - มิฉะนั้น:
l = mid + 1
- คืน
letters[l % len(letters)](จัดการ wrap around)
การติดตั้งใน Python
class Solution:
def nextGreatestLetter(self, letters, target):
l, r = 0, 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
อินพุต / เอาต์พุต
Input: ["c","f","j"], "a" Output: c