สมมติว่าเรามีรายการหมายเลขที่เรียกว่า 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)
- ถ้าเกิด nums[i] เป็น nums> (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]