ধরুন আমাদের কাছে স্বতন্ত্র সংখ্যার একটি তালিকা আছে; ক্রমবর্ধমান ক্রমে তালিকা বাছাই করার জন্য আমাদের ন্যূনতম সংখ্যক অদলবদল করতে হবে।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[3, 1, 7, 5], তাহলে আউটপুট হবে 2, যেমন আমরা 3 এবং 1, তারপর 5 এবং 7 অদলবদল করতে পারি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- sort_seq :=তালিকার সংখ্যা সাজান
- টেবিল :=একটি নতুন মানচিত্র
- প্রতিটি সূচক i এবং n এর মান সংখ্যার জন্য, করুন
- টেবিল[n] :=i
- অদলবদল :=0
- আমি 0 থেকে সংখ্যার আকারের মধ্যে,
- করুন
- n :=সংখ্যা[i]
- s_n :=sort_seq[i]
- s_i :=টেবিল[s_n]
- যদি s_n n এর মত না হয়, তাহলে
- swaps :=swaps + 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