Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm ID ứng cử viên có đa số phiếu bầu trong Python

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)

  1. l = len(nums).
  2. Dùng Counter đếm tần suất.
  3. Duyệt các cặp (id, count): nếu count > l//2 trả về id.
  4. 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