มีรายการ 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]