ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে, আমাদেরকে যেকোনো ক্রমানুসারে (অ্যাসেন্ডিং বা ডিসেন্ডিং) থিলিস্ট সাজানোর জন্য সর্বনিম্ন খরচ বের করতে হবে। এখানে খরচ হল যেকোনো উপাদানের পুরাতন এবং নতুন মানের মধ্যে পার্থক্যের সমষ্টি।
সুতরাং, ইনপুট যদি [2, 5, 4] এর মত হয়, তাহলে আউটপুট হবে 2।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- temp:=অ্যারের সংখ্যা অনুলিপি করুন
- তালিকা টেম্প বাছাই করুন
- c1:=0, c2:=0
- n:=সংখ্যার আকার
- আমি 0 থেকে n রেঞ্জের জন্য, কর
- যদি nums[i] temp[i] এর মত না হয়, তাহলে
- c1 :=c1 + |nums[i]-temp[i]|
- যদি সংখ্যা[i] temp[n-1-i] এর মতো না হয়, তাহলে
- c2 :=c2 + |nums[i]-temp[n-i-1]|
- যদি nums[i] temp[i] এর মত না হয়, তাহলে
- সর্বনিম্ন c1 এবং c2 ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, nums): temp=nums.copy() temp.sort() c1=0 c2=0 n=len(nums) for i in range(n): if nums[i]!=temp[i]: c1+=abs(nums[i]-temp[i]) if nums[i]!=temp[n-1-i]: c2+=abs(nums[i]-temp[n-i-1]) return min(c1,c2) ob = Solution() print(ob.solve([2, 5, 4]))
ইনপুট
[2, 5, 4]
আউটপুট
2