मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है जहां प्रत्येक संख्या एक उम्मीदवार को वोट दर्शाती है। हमें उन उम्मीदवारों के आईडी ढूंढने हैं जिनके पास floor(n/3) से अधिक वोट हैं, गैर-घटते क्रम में।
उदाहरण के लिए, यदि इनपुट nums = [3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7] है, तो आउटपुट [6, 7] होगा, क्योंकि 6 और 7 के पास 40% वोट हैं।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- ans := एक नया खाली सेट
- सूची nums को क्रमबद्ध करें
- i := 0
- n := nums का आकार
- जब तक i < nums का आकार, करें
- यदि nums में nums[i] की घटनाएं > (n / 3), तो
- nums[i] को ans में डालें
- i := i + (n / 3)
- यदि nums में nums[i] की घटनाएं > (n / 3), तो
- क्रमबद्ध क्रम में ans लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
उदाहरण
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]