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

โปรแกรมรายชื่อผู้สมัครที่ได้รับคะแนนเสียงข้างมากใน python


สมมติว่าเรามีรายการหมายเลขที่เรียกว่า nums ซึ่งแต่ละหมายเลขแสดงถึงการลงคะแนนให้กับผู้สมัคร เราต้องหาไอดีของผู้สมัครที่มีคะแนนเสียงมากกว่า floor(n/3) ตามลำดับไม่ลดลง

ดังนั้น หากอินพุตเป็น nums =[3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7] ผลลัพธ์จะเป็น [6, 7] เนื่องจาก 6 และ 7 มี 40 % ของคะแนนโหวต

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ans :=ชุดว่างใหม่
  • เรียงเลขรายการ
  • ผม :=0
  • n :=ขนาดของ nums
  • ในขณะที่ฉัน <ขนาดของ nums ทำ
    • ถ้าเกิด nums[i] เป็น nums> (n / 3) แล้ว
      • ใส่ nums[i] ลงใน ans
    • ผม :=ผม + (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]