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

โปรแกรมค้นหาจำนวนรายการที่เหลือหลังจากขาย n รายการใน python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่ารายการและค่าอื่น n พนักงานขายมีสินค้าในกระเป๋าพร้อมรหัสสุ่ม พนักงานขายสามารถลบรายการออกจากกระเป๋าได้มากถึง n รายการ เราต้องหาจำนวนขั้นต่ำของ ID ต่างๆ ในกระเป๋าหลังจากนำออกแล้ว n รายการ

ดังนั้นหากอินพุตเป็นเหมือนรายการ =[2, 2, 6, 6] n =2 ผลลัพธ์จะเป็น 1 เนื่องจากเราสามารถขายสองรายการด้วย ID 2 หรือ ID 6 ดังนั้นเฉพาะรายการที่มีเป้าหมายเดียวจะเป็น ที่นั่น

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

  • c :=ความถี่ของแต่ละองค์ประกอบที่มีอยู่ในรายการ
  • ans :=ขนาดของ c
  • freq :=เรียงลำดับรายการความถี่ทั้งหมดใน c
  • ผม :=0
  • ในขณะที่ฉัน <ขนาดความถี่ ทำ
    • ถ้า freq[i] <=n แล้ว
      • n :=n - freq[i]
      • ans :=ans - 1
    • มิฉะนั้น
      • คืนสินค้า
    • ผม :=ผม + 1
  • คืน 0

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

ตัวอย่าง

from collections import Counter

class Solution:
   def solve(self, items, n):
      c = Counter(items)
      ans = len(c)
      freq = sorted(c.values())
      i = 0
      while i < len(freq):
         if freq[i] <= n:
            n -= freq[i]
            ans -= 1
         else:
            return ans
         i += 1
      return 0

ob = Solution()
items = [2, 2, 6, 6]
n = 2
print(ob.solve(items, n))

อินพุต

[2, 2, 6, 6], 2

ผลลัพธ์

1