কম্পিউটার টিউটোরিয়াল

পাইথনে তালিকাকে আরোহী বা অবরোহী ক্রমে সাজাতে ন্যূনতম খরচ খুঁজে বের করার প্রোগ্রাম


মনে করুন 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
  1. পাইথনে ন্যূনতম মানের ভের্টেক্স থেকে সর্বোচ্চ মানের ভের্টেক্স পর্যন্ত ন্যূনতম খরচের পথ বের করার প্রোগ্রাম

  2. পাইথনে স্টিক কাট করার ন্যূনতম খরচ বের করার প্রোগ্রাম

  3. পাইথনে হাউস রঙ করার ন্যূনতম খরচ বের করার প্রোগ্রাম

  4. পাইথনে সব পয়েন্ট কানেক্ট করার ন্যূনতম খরচ বের করার প্রোগ্রাম