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

পাইথনে পেয়ারওয়াইজ এডজেসেন্ট সম ছোট রাখার প্রোগ্রাম


মান ল করুন nums নামের একটি নন-নেগেটিভ সংখ্যার তালিকা এবং k নামের একটি নন-নেগেটিভ মান। এখন একটি অপারেশন আছে যেখানে nums-এ একটি পজিটিভ নম্বর সিলেক্ট করে ১ কমাতে পারি। ন্যূনতম কত অপারেশন লাগবে যাতে লিস্টের সব আডজেসেন্ট পেয়ারের যোগফল <= k হয়। জবাব বড় হলে mod 10^9+7 দিয়ে ফেরত দিন।

যদি ইনপুট হয় nums = [4, 6, 2, 5], k = 6, তবে আউটপুট হবে ৫, কারণ লিস্টকে [3, 3, 1, 4] এ ডিক্রিমেন্ট করলে মোট ৫ ডিক্রিমেন্ট লাগে। এখানে সব আডজেসেন্ট পেয়ারের যোগফল <= 6।

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:

  • m = 10^9 + 7
  • ans := 0
  • i কে ০ থেকে nums-এর আকার - ১ পর্যন্ত লুপ চালান:
    • sm := nums[i] + nums[i+1]
    • diff := max(sm - k, 0)
    • nums[i+1] := nums[i+1] - diff
    • যদি nums[i+1] < 0, nums[i+1] := 0
    • ans := ans + diff
  • ans % m ফেরত দিন

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

উদাহরণ

m = 10 ** 9 + 7 class Solution:    def solve(self, nums, k):       ans = 0       for i in range(0, len(nums) - 1):          sm = nums[i] + nums[i + 1]          diff = max(sm - k, 0)          nums[i + 1] -= diff          if nums[i + 1] < 0:             nums[i + 1] = 0          ans += diff       return ans % m ob = Solution() nums = [4, 6, 2, 5] k = 6 print(ob.solve(nums, k))

ইনপুট

[4, 6, 2, 5], 6

আউটপুট

5

  1. N-ary ট্রির কপি (ক্লোন) তৈরি করার প্রোগ্রাম

  2. পাইথনে দেয়া স্ট্রিং প্যাংগ্রাম কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে ইন্ডিয়ান ফ্ল্যাগ (ভারতীয় পতাকা) আঁকা

  4. পাইথন প্রোগ্রামে callable() ফাংশন