मान लीजिए कि हमारे पास अलग-अलग संख्याओं की एक सूची है; हमें सूची को बढ़ते क्रम में क्रमबद्ध करने के लिए आवश्यक न्यूनतम संख्या में स्वैप का पता लगाना होगा।
इसलिए, अगर इनपुट nums =[3, 1, 7, 5] जैसा है, तो आउटपुट 2 होगा, क्योंकि हम 3 और 1 को स्वैप कर सकते हैं, फिर 5 और 7।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- sort_seq :=सूची संख्या क्रमित करें
- तालिका :=एक नया नक्शा
- प्रत्येक इंडेक्स के लिए i और मान n अंकों में, करते हैं
- तालिका[n] :=मैं
- स्वैप:=0
- मैं के लिए 0 से लेकर अंकों के आकार तक, करें
- n :=nums[i]
- s_n :=sort_seq[i]
- s_i :=तालिका[s_n]
- यदि s_n, n के समान नहीं है, तो
- स्वैप :=स्वैप + 1
- अंक [s_i] :=n
- अंक[i] :=s_n
- तालिका[n] :=s_i
- टेबल[s_n] :=i
- वापसी स्वैप
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण कोड
class Solution:
def solve(self, nums):
sort_seq = sorted(nums)
table = {}
for i, n in enumerate(nums):
table[n] = i
swaps = 0
for i in range(len(nums)):
n = nums[i]
s_n = sort_seq[i]
s_i = table[s_n]
if s_n != n:
swaps += 1
nums[s_i] = n
nums[i] = s_n
table[n] = s_i
table[s_n] = i
return swaps
ob = Solution()
nums = [3, 1, 7, 5]
print(ob.solve(nums)) लौटाता हूं इनपुट
[3, 1, 7, 5]
आउटपुट
2