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

โปรแกรมหา k ที่มีสมาชิก k ตัวมีค่ามากกว่าหรือเท่า k ใน Python

ให้ลิสต์ nums (non-negative) หา k ที่มีสมาชิกใน nums ที่ ≥ k อยู่พอดี k ตัว หาไม่เจอ → -1

ตัวอย่าง: nums=[6,4,0,8,2,9] → 4 (มี 4 ตัว ≥ 4: 6,4,8,9)

ขั้นตอน (Sort + Scan)

  1. เรียง nums เรียงมากไปน้อย
  2. วน i จาก 1 ถึง len(nums)-1:
    • ถ้า i > nums[i-1]: หยุด (ไม่มีคำตอบต่อไป)
    • ถ้า i > nums[i]: คืน i

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

def solve(nums):
    nums.sort(reverse=True)
    for i in range(1, len(nums)):
        if i > nums[i-1]:
            break
        elif i > nums[i]:
            return i
    return -1

nums = [6, 4, 0, 8, 2, 9]
print(solve(nums))  # Output: 4

อินพุต

[6, 4, 0, 8, 2, 9]

เอาต์พุต

4