মনে করুন nums একটি সংখ্যার তালিকা। তালিকাকে যেকোনো ক্রমে (আরোহী বা অবরোহী) সাজাতে ন্যূনতম খরচ খুঁজে বের করতে হবে। খরচ হলো প্রতিটি এলিমেন্টের পুরনো ও নতুন মানের পার্থক্যের যোগফল।
উদাহরণস্বরূপ, [2, 5, 4] হলে আউটপুট ২।
সমাধানের ধাপসমূহ
- temp := nums কপি করুন
- temp সর্ট করুন
- c1 := 0, c2 := 0
- n := nums-এর আকার
- i = 0 থেকে n-1 পর্যন্ত,
- যদি nums[i] != temp[i], c1 += |nums[i]-temp[i]|
- যদি nums[i] != temp[n-1-i], c2 += |nums[i]-temp[n-i-1]|
- min(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