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