मान लीजिए कि हमारे पास वोट नामक स्ट्रिंग्स की एक सूची है, यहां प्रत्येक प्रविष्टि छोटे अक्षरों में है और वे उच्चतम से निम्नतम वरीयता के क्रम में उम्मीदवारों पर वोटों का प्रतिनिधित्व कर रहे हैं। यहां एक उम्मीदवार की रैंक सबसे पहले सर्वोच्च वरीयता पर प्राप्त मतों की संख्या पर निर्भर करती है। अब यदि संबंध हैं, तो हम अगली सर्वोच्च वरीयता पर प्राप्त मतों की संख्या की जाँच करेंगे, और इसी तरह। यदि अभी भी संबंध हैं, तो उन्हें वर्णानुक्रम में क्रमबद्ध किया जाएगा। इसलिए हमें उच्चतम से निम्नतम रैंक के क्रम में टीमों की अंतिम रैंकिंग ढूंढनी होगी।
इसलिए, यदि इनपुट वोट =["zyx", "zxy", "xyz"] की तरह है, तो आउटपुट "zxy" होगा, क्योंकि z को सबसे अधिक वरीयता मिली है, इसलिए इसे पहले स्थान पर रखा गया है। फिर x को सर्वोच्च वरीयता का दूसरा सबसे अधिक अंक प्राप्त हुआ, और y को कोई सर्वोच्च वरीयता वाला वोट नहीं मिला।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- गिनती :=मतों में तार की लंबाई
- cand :=एक खाली नक्शा जहां प्रत्येक कुंजी आकार गणना की एक सूची होगी, और शुरुआत में वे 0 से भरे हुए हैं
- वोट में प्रत्येक v के लिए, करें
- प्रत्येक अनुक्रमणिका i और v में मान c के लिए, करें
- कैंडी बढ़ाएं[c, i] 1 से
- मान के आधार पर कैंडी आइटम को अवरोही क्रम में क्रमबद्ध करें, जब मान समान हों, तो उन्हें वर्णानुक्रम में क्रमबद्ध करें
- सॉर्ट किए गए तत्वों को जोड़कर एक स्ट्रिंग लौटाएं।
- प्रत्येक अनुक्रमणिका i और v में मान c के लिए, करें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
from collections import defaultdict class Solution: def solve(self, votes): count = len(votes[0]) cand = defaultdict(lambda: [0] * count) for v in votes: for i, c in enumerate(v): cand[c][i] += 1 return "".join(sorted(cand.keys(), key=lambda x: (cand[x], -ord(x)), reverse=True)) ob = Solution() votes = ["zyx", "zxy", "xyz"] print(ob.solve(votes))
इनपुट
["zyx", "zxy", "xyz"]
आउटपुट
zxy