Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Find Smallest Letter Greater Than Target ใน Python: หาตัวอักษรน้อยที่สุดที่มากกว่าเป้าหมาย

ได้รายการตัวอักษร letters เรียงลำดับแล้ว (พิมพ์เล็ก) และตัวอักษรเป้าหมาย target หาตัวอักษรในรายการที่มากกว่า target และมีค่าน้อยที่สุด รายการวนรอบ (wrap around) คือถ้า target='z' และ letters=['a','b'] → คำตอบ 'a'

ตัวอย่าง

letters = ["c","f","j"], target = 'a' → 'c'

ขั้นตอนการแก้ปัญหา (Binary Search)

  1. l = 0, r = len(letters) - 1
  2. วน while l <= r:
    • mid = (l + r) // 2
    • ถ้า letters[mid] > target: r = mid - 1
    • มิฉะนั้น: l = mid + 1
  3. คืน 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