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

ตรวจสอบว่าอาร์เรย์ลดเป็นศูนย์ได้ด้วยการดำเนินการ k ครั้งหรือไม่ ใน Python


ปัญหา

ให้อาร์เรย์ nums และค่า k การดำเนินการ: ลบค่าที่น้อยที่สุด (ที่ไม่ใช่ศูนย์) ออกจากทุกค่าที่ไม่ใช่ศูนย์ ทำซ้ำ k ครั้ง ต้องการทราบว่าสามารถทำให้ทุกค่าเป็นศูนย์ได้หรือไม่

ข้อสังเกตสำคัญ

จำนวนครั้งที่ต้องดำเนินการ = จำนวนค่าที่แตกต่างกัน (distinct values) ในอาร์เรย์

ตัวอย่าง

nums = [2, 2, 3, 4], k = 3 → distinct = {2,3,4} → 3 ค่า → True

โค้ดตัวอย่าง

def solve(nums, k):
    return len(set(nums)) == k

print(solve([2, 2, 3, 4], 3))  # True

อินพุต / เอาต์พุต

Input:  [2, 2, 3, 4], 3
Output: True