Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm dãy con nhỏ nhất về mặt từ vựng có kích thước k trong Python

Giả sử chúng ta có một danh sách các số được gọi là num và một giá trị khác k, chúng ta phải tìm dãy con nhỏ nhất về mặt từ vựng có kích thước k.

Vì vậy, nếu đầu vào là nums =[2, 3, 1, 10, 3, 4] k =3, thì đầu ra sẽ là [1, 3, 4]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • l:=kích thước của nums, r:=k - 1
  • out:=một danh sách mới
  • đối với j trong phạm vi từ 0 đến k, thực hiện
    • mn:=nums [phần bổ sung của r]
    • đối với tôi trong phạm vi r đến l, thực hiện
      • nếu mn> =nums [phần bù của i], thì
        • mn:=nums [phần bổ sung của tôi]
        • l:=i
    • r:=r - 1
  • chèn mn vào cuối đoạn văn bản
  • quay trở lại

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

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

Đầu ra

[1, 3, 4]