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

โปรแกรมค้นหาจำนวนเต็มที่ไม่ซ้ำจำนวนน้อยที่สุดหลังจากลบ K โดยใช้ Python


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums ซึ่งเก็บเฉพาะจำนวนเต็มเท่านั้น ถ้าเรามีเลข k เราต้องหาองค์ประกอบที่ไม่ซ้ำจำนวนน้อยที่สุดหลังจากลบองค์ประกอบ k ออกแล้ว

ดังนั้น ถ้าอินพุตเป็น nums =[5,4,2,2,4,4,3] k =3 ผลลัพธ์จะเป็น 2 เพราะถ้าเราลบ 5 และ 3 และตัวใดตัวหนึ่งจาก 2s หรือ 4s ตัวใดตัวหนึ่งก็จะเหลือเพียง 2 และ 4 เท่านั้น

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

  • พจนานุกรม:=แผนที่ใหม่

  • สำหรับแต่ละ num เป็น num ทำ

    • ถ้า num ไม่อยู่ในพจนานุกรมก็

      • พจนานุกรม[num]:=1

    • มิฉะนั้น

      • พจนานุกรม[num] :=พจนานุกรม[num] + 1

  • count:=ขนาดของพจนานุกรม

  • สำหรับแต่ละความถี่ในการเรียงลำดับของค่าทั้งหมดของพจนานุกรม ทำ

    • k :=k - ความถี่

    • ถ้า k <0 แล้ว

      • จำนวนคืน

    • มิฉะนั้น

      • นับ :=นับ - 1

  • จำนวนคืน

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

ตัวอย่าง

def solve(nums, k):
   dictionary={}
   for num in nums:
      if num not in dictionary:
         dictionary[num]=1
      else:
         dictionary[num]+=1
   count=len(dictionary)
   for frequency in sorted(dictionary.values()):
      k-=frequency
      if(k<0):
         return count
      else:
         count-=1
   return count
nums = [5,4,2,2,4,4,3]
k = 3
print(solve(nums, k))

อินพุต

[5,4,2,2,4,4,3], 3

ผลลัพธ์

2