ধরুন আমাদের কাছে অ-ঋণাত্মক সংখ্যাগুলির একটি তালিকা আছে যা সংখ্যা বলে এবং একটি অ-ঋণাত্মক মান k। এখন ধরুন আমরা একটি অপারেশন করতে পারি যেখানে আমরা সংখ্যায় একটি একক ধনাত্মক নম্বর নির্বাচন করি এবং এটিকে 1 দ্বারা হ্রাস করি। আমাদের ন্যূনতম সংখ্যক ক্রিয়াকলাপ খুঁজে বের করতে হবে যাতে তালিকায় সংলগ্ন মানের প্রতিটি জোড়ার যোগফল <=k। যদি উত্তরটি খুব বড় হয়, তাহলে ফলাফল মোড 10^9 + 7 ফেরত দিন।
সুতরাং, যদি ইনপুটটি nums =[4, 6, 2, 5], k =6 এর মত হয়, তাহলে আউটপুট হবে 5, কারণ আমরা তালিকাটিকে [3, 3, 1, 4] এ কমিয়ে দিতে পারি যা মোট 5টি হ্রাস। এখানে প্রতিটি সন্নিহিত জোড়ার যোগফল হল <=6.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- m =10^9 + 7
- উত্তর :=0
- আমি 0 থেকে সংখ্যার আকার - 1 এর রেঞ্জের জন্য, কর
- sm :=nums[i] + nums[i + 1]
- diff :=সর্বাধিক sm - k এবং 0
- সংখ্যা[i + 1] :=সংখ্যা[i + 1] - পার্থক্য
- যদি সংখ্যা[i + 1] <0 হয়, তাহলে
- সংখ্যা[i + 1] :=0
- উত্তর :=উত্তর + পার্থক্য
- উত্তর mod 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