मान लीजिए हमारे पास nums नामक गैर-ऋणात्मक संख्याओं की एक सूची और एक गैर-ऋणात्मक मान k है। अब मान लीजिए एक ऑपरेशन है जहां हम nums में एक धनात्मक संख्या चुनते हैं और इसे 1 से घटाते हैं। हमें आवश्यक ऑपरेशन की न्यूनतम संख्या ढूंढनी है जैसे कि सूची में प्रत्येक आसन्न जोड़ी का योग <= k हो। यदि उत्तर बहुत बड़ा है, तो परिणाम मॉड 10^9 + 7 वापस करें।
इसलिए, यदि इनपुट nums = [4, 6, 2, 5], k = 6 जैसा है, तो आउटपुट 5 होगा, क्योंकि हम सूची को [3, 3, 1, 4] में घटा सकते हैं जो कुल 5 कमी है। यहां प्रत्येक आसन्न जोड़ी का योग <= 6 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- m = 10^9 + 7
- ans := 0
- i के लिए 0 से nums के आकार - 1 तक की रेंज में, करें
- sm := nums[i] + nums[i + 1]
- diff := 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