মান লক্ষ্য করুন আমাদের কাছে বরাবর নয় এমন একটি সংখ্যার তালিকা আছে; আমাদের কাজ হল তালিকাটি ক্রমবর্ধমান ক্রমে সর্ট করার জন্য প্রয়োজনীয় ন্যূনতম সওয়াপের সংখ্যা বের করা।
উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [3, 1, 7, 5], তবে আউটপুট হবে 2, কারণ আমরা ৩ এবং ১ কে সওয়াপ করে, তারপর ৫ এবং ৭ কে সওয়াপ করে সর্ট করা যাবে।
sort_seq := numsকে সর্ট করা তালিকাtable :=একটি নতুন ম্যাপ (ডিকশনারি)nums-এ প্রতিটি ইনডেক্সiএবং ভ্যালুnএর জন্য,table[n] := iসেট করুন।swaps := 0iকে ০ থেকেlen(nums)পর্যন্ত লুপ চালান:n := nums[i]s_n := sort_seq[i]s_i := table[s_n]- যদি
s_n != nহয়, তবে:swaps := swaps + 1nums[s_i] := nnums[i] := s_ntable[n] := s_itable[s_n] := i
swapsরিটার্ন করুন।
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