ধরুন আমাদের একটি অ-ঋণাত্মক পূর্ণসংখ্যা আছে; সর্বাধিক মূল্যবান সংখ্যা পেতে আমরা সর্বাধিক একবারে দুটি সংখ্যা অদলবদল করতে পারি। আমরা পেতে পারি সর্বোচ্চ মূল্যবান সংখ্যা ফেরত দিতে হবে। সুতরাং ইনপুট যদি 2736 এর মত হয় তাহলে আউটপুট হবে 7236। তাই এখানে আমরা 2 এবং 7 অদলবদল করছি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- সংখ্যা :=সংখ্যা থেকে প্রতিটি অঙ্ক কেটে নিন এবং একটি তালিকা তৈরি করুন
- num1 :=সংখ্যাটিকে বিপরীত ক্রমে সাজান
- সূচক :=0
- যখন সূচক <সংখ্যার দৈর্ঘ্য
- যদি num1[index] num[index]
- এর মত না হয়
- a :=সূচক (index + 1) থেকে শেষ পর্যন্ত সংখ্যার সাবয়ারে
- বিপরীত a
- a :=a এর দৈর্ঘ্য – a + index + 1 – 1 এর num[index]
- num[index], num[a] :=num[a], num[index]
- লুপ ভাঙুন
- 1 দ্বারা সূচক বাড়ান
- যদি num1[index] num[index]
- সংখ্যায় উপস্থিত সংখ্যাগুলি যোগ করুন এবং এটিকে পূর্ণসংখ্যা হিসাবে করুন
- ফলাফল ফেরত দিন।
উদাহরণ(পাইথন)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
class Solution: def maximumSwap(self, num): num = list(map(int,list(str(num)))) num1 = sorted(num,reverse=True) index=0 while index<len(num): if num1[index]!=num[index]: a = num[index+1:] a.reverse() a=len(a) - a.index(num1[index])+index+1 -1 num[index],num[a] = num[a],num[index] break index+=1 return int("".join(str(x) for x in num)) ob1 = Solution() print(ob1.maximumSwap(5397))
ইনপুট
৷5397
আউটপুট
9357