Mô tả bài toán
Cho danh sách nums chứa n phiếu bầu (mỗi số là ID ứng cử viên). Tìm ID có số phiếu > floor(n/2). Nếu không có, trả về -1.
Ví dụ: nums = [6,6,2,2,3,3,3,3,3] → đầu ra 3.
Giải thuật (Đếm tần suất - Hash Map)
l = len(nums).- Dùng
Counterđếm tần suất. - Duyệt các cặp
(id, count): nếucount > l//2trả vềid. - Trả về -1 nếu không tìm thấy.
Ví dụ mã Python
from collections import Counter
class Solution:
def solve(self, nums):
l = len(nums)
count = Counter(nums)
for i, j in count.items():
if j > (l // 2):
return i
return -1
ob = Solution()
nums = [6, 6, 2, 2, 3, 3, 3, 3, 3]
print(ob.solve(nums))
Đầu vào
[6, 6, 2, 2, 3, 3, 3, 3, 3]
Đầu ra
3