สมมติว่าเรามีอาร์เรย์ที่เรียกว่า 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