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

โปรแกรมหาผู้สมัครที่ได้คะแนนเสียงมากกว่า n/3 ใน Python


มีรายการ nums แทนคะแนนเสียง หา ID ผู้สมัครที่ได้มากกว่า ⌊n/3⌋ คะแนน เรียงน้อยไปมาก

เช่น nums=[3,2,6,6,6,6,7,7,7,7,7] ให้ [6,7] เพราะ 6 และ 7 ได้ 40% คะแนน

ขั้นตอนการแก้ปัญหา

  • เรียง nums
  • ข้ามทีละ n//3 ตัว ตรวจสอบจำนวนครั้งที่ปรากฏ
  • ถ้ามากกว่า n//3 ใส่ในชุดคำตอบ
  • คืนค่าที่เรียงแล้ว

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

class Solution:
    def solve(self, nums):
        ans = set()
        nums.sort()
        i = 0
        n = len(nums)
        while i < len(nums):
            if nums.count(nums[i]) > n//3:
                ans.add(nums[i])
            i += n//3
        return sorted(list(ans))

ob = Solution()
nums = [3,2,6,6,6,6,7,7,7,7,7]
print(ob.solve(nums))

อินพุต

[3,2,6,6,6,6,7,7,7,7,7]

เอาต์พุต

[6, 7]