पूर्णांकों की एक लिस्ट nums दी गई है, आप निम्न ऑपरेशन कर सकते हैं: nums में सबसे बड़ी संख्या चुनें और इसे दूसरी सबसे बड़ी संख्या में बदलें। लिस्ट में सभी पूर्णांकों को समान बनाने के लिए आवश्यक न्यूनतम ऑपरेशनों की संख्या लौटाएं।
उदाहरण के लिए, यदि इनपुट nums = [5, 9, 2] है, तो आउटपुट 3 होगा, क्योंकि पहले 9 चुनें, फिर इसे 5 बनाएं, तो सरणी [5, 5, 2] है, फिर 5 चुनें और 2 बनाएं, [5, 2, 2], फिर 5 चुनें और 2 में बदलें, [2, 2, 2]।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे
- vals := nums में यूनिक कैरेक्टर की सॉर्ट की गई लिस्ट
- vtoi := vals में सभी मान v के लिए कुंजी के रूप में और उनके इंडेक्स i के रूप में मान का एक मैप
- nums में सभी v के लिए vtoi[v] का योग लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें
उदाहरण
class Solution: def solve(self, nums): vals = sorted(set(nums)) vtoi = {v: i for i, v in enumerate(vals)} return sum(vtoi[v] for v in nums) ob = Solution() nums = [5, 9, 2] print(ob.solve(nums))
इनपुट
[5, 9, 2]
आउटपुट
3