मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है जो एक गोलाकार सूची का प्रतिनिधित्व कर रहा है। हमें गैर-आसन्न संख्याओं का सबसे बड़ा योग ज्ञात करना है।
इसलिए, यदि इनपुट nums =[10, 3, 4, 8] की तरह है, तो आउटपुट 14 होगा, क्योंकि हम 10 और 4 ले सकते हैं। हम 10 और 8 नहीं ले सकते क्योंकि वे आसन्न हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=अंकों का आकार
- nums1 :=nums[सूचकांक 0 से n - 2 तक]
- nums2 :=nums[सूचकांक 1 से अंत तक]
- फ़ंक्शन f() को परिभाषित करें। इसमें मुझे लगेगा
- यदि i>=nums1 का आकार, तो
- वापसी 0
- अधिकतम nums1[i] + f(i + 2) और f(i + 1) लौटाएं
- एक फ़ंक्शन को परिभाषित करें g() । इसमें ज लगेगा
- यदि j>=nums2 का आकार, तो
- वापसी 0
- अधिकतम nums2[j] + g(j + 2) और g(j + 1) लौटाएं
- मुख्य विधि से निम्न कार्य करें -
- अधिकतम f(0) और g(0) लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, nums): n = len(nums) nums1 = nums[: n - 1] nums2 = nums[1:] def f(i): if i >= len(nums1): return 0 return max(nums1[i] + f(i + 2), f(i + 1)) def g(j): if j >= len(nums2): return 0 return max(nums2[j] + g(j + 2), g(j + 1)) return max(f(0), g(0)) ob = Solution() nums = [10, 3, 4, 8] print(ob.solve(nums))
इनपुट
[10, 3, 4, 8]
आउटपुट
14