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

Chương trình liệt kê ứng cử viên có phiếu bầu trên n/3 bằng Python


Cho danh sách nums mỗi số là một phiếu bầu. Tìm các ứng cử viên có phiếu > ⌊n/3⌋, trả về theo thứ tự không giảm.

Ví dụ: nums = [3,2,6,6,6,6,7,7,7,7,7] → [6,7].

Giải thuật

  • Sắp xếp nums.
  • Duyệt bước nhảy n//3: tại vị trí i, nếu nums.count(nums[i]) > n//3 thì thêm vào kết quả.
  • Trả về tập hợp đã sắp xếp.

Ví dụ minh họa

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))

Đầu vào

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

Đầu ra

[6, 7]