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

পাইথনে অ্যারেকে স্ট্রিক্টলি ইনক্রিজিং করার জন্য ন্যূনতম অপারেশন গণনা


একটি nums অ্যারে দেওয়া আছে। এক অপারেশনে আমরা যেকোনো একটি উপাদান ১ বাড়াতে পারি। nums কে স্ট্রিক্টলি ইনক্রিজিং (প্রতিটি পরবর্তী উপাদান পূর্ববর্তীটির চেয়ে বড়) করার জন্য ন্যূনতম কত অপারেশন লাগবে সেটি বের করতে হবে।

যেমন, nums = [8,5,7] হলে আউটপুট ৭। কারণ: [8,6,7] -> [8,7,7] -> [8,8,7] -> [8,9,7] -> [8,9,8] -> [8,9,9] -> [8,9,10]।

সমাধানের ধাপসমূহ

  • count := 0
  • i = 0 থেকে nums-এর আকার - 2 পর্যন্ত লুপ:
    • যদি nums[i+1] <= nums[i] হয়, তবে count += nums[i] - nums[i+1] + 1 এবং nums[i+1] += nums[i] - nums[i+1] + 1
  • count ফেরত দিন।

উদাহরণ

def solve(nums):
    count = 0
    for i in range(len(nums) - 1):
        if nums[i+1] <= nums[i]:
            count += nums[i] - nums[i+1] + 1
            nums[i+1] += nums[i] - nums[i+1] + 1
    return count

nums = [8,5,7]
print(solve(nums))

ইনপুট

[8,5,7]

আউটপুট

7

  1. পাইথনে লিফ নোডের তালিকা থেকে ন্যূনতম যোগফল वाले ট্রি বের করার প্রোগ্রাম

  2. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  3. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

  4. পাইথনে অ্যারের যোগফল বের করা