मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, हमें दी गई सूची से न्यूनतम योग बाद में खोजना होगा जैसे कि तीन लगातार संख्याओं के सभी समूहों के लिए कम से कम एक संख्या का चयन किया जाता है। यदि दी गई सूची की लंबाई 3 से कम है, तब भी एक संख्या का चयन किया जाना चाहिए।
इसलिए, यदि इनपुट संख्या =[2, 3, 4, 5, 6, 7] की तरह है, तो आउटपुट 7 होगा, क्योंकि हम 2 और 5 का चयन कर सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- n :=अंकों का आकार
- यदि n, 0 के समान है, तो
- वापसी 0
- यदि n 1 के समान है, तो
- वापसी संख्या[0]
- यदि n 2 के समान है, तो
- न्यूनतम अंक लौटाएं[0] और अंक[1]
- तालिका :=आकार n की सूची और 0 से भरें
- तालिका[0] :=अंक[0]
- तालिका[1] :=अंक[1]
- तालिका[2] :=अंक[2]
- 3 से n की श्रेणी में i के लिए, करें
- तालिका[i] :=nums[i] + न्यूनतम तालिका[i - 3], तालिका[i - 2] और तालिका[i - 1]
- res :=न्यूनतम तालिका[n - 1], तालिका[n - 2] और तालिका[n - 3]
- रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण कोड
class Solution: def solve(self, nums): n = len(nums) if n == 0: return 0 if n == 1: return nums[0] if n == 2: return min(nums[0], nums[1]) table = [0] * n table[0] = nums[0] table[1] = nums[1] table[2] = nums[2] for i in range(3, n): table[i] = nums[i] + min(table[i - 3], table[i - 2], table[i - 1]) res = min(table[n - 1], table[n - 2], table[n - 3]) return res ob = Solution() nums = [2, 3, 4, 5, 6, 7] print(ob.solve(nums))
इनपुट
[2, 3, 4, 5, 6, 7]
आउटपुट
7