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

โปรแกรมค้นหาลำดับย่อยที่เล็กที่สุดของพจนานุกรมขนาด k ใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k เราต้องหาลำดับย่อยของขนาด k ที่เล็กที่สุดในเชิงพจนานุกรม

ดังนั้น หากอินพุตเป็น nums =[2, 3, 1, 10, 3, 4] k =3 ผลลัพธ์จะเป็น [1, 3, 4]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • l :=ขนาดของ nums, r :=k - 1
  • ออก :=รายการใหม่
  • สำหรับ j ในช่วง 0 ถึง k ทำ
    • mn :=nums[ส่วนเติมเต็มของ r]
    • สำหรับฉันอยู่ในช่วง r ถึง l ทำ
      • ถ้า mn>=nums[ส่วนเติมเต็มของ i] แล้ว
        • mn :=nums[ส่วนเติมเต็มของ i]
        • l :=ฉัน
    • r :=r - 1
  • แทรก mn ที่ส่วนท้ายของการออก
  • คืนสินค้า

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

class Solution:
   def solve(self, nums, k):
      l, r = len(nums), k - 1
      out = []
      for j in range(k):
         mn = nums[~r]
         for i in range(r, l):
            if mn >= nums[~i]:
               mn = nums[~i]
               l = i
         r -= 1
         out.append(mn)
   return out
ob = Solution()
nums = [2, 3, 1, 10, 3, 4]
k = 3
print(ob.solve(nums, k))

อินพุต

[2, 3, 1, 10, 3, 4], 3

ผลลัพธ์

[1, 3, 4]