মান লক্ষ্য করুন আমাদের কাছে একটি সংখ্যার তালিকা nums আছে যেটি একটি সার্কুলার লিস্টকে প্রতিনিধিত্ব করে। আমাদের কাজ হল নন-এডজেসেন্ট (পাশাপাশি নয় এমন) সংখ্যাগুলোর সর্বোচ্চ যোগফল বের করা।
উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [10, 3, 4, 8], তবে আউটপুট হবে 14, কারণ আমরা ১০ এবং ৪ নিতে পারি। ১০ এবং ৮ নেওয়া যাবে না কারণ সার্কুলার লিস্টে তারা এডজেসেন্ট।
n := len(nums)nums1 := nums[0:n-1](শেষ এলিমেন্ট বাদ)nums2 := nums[1:](প্রথম এলিমেন্ট বাদ)- একটি
f()ফাংশন ডিফাইন করুন যাiনেবে:- যদি
i >= len(nums1)হয়, তবে0রিটার্ন করুন। max(nums1[i] + f(i+2), f(i+1))রিটার্ন করুন।
- যদি
- একটি
g()ফাংশন ডিফাইন করুন যাjনেবে:- যদি
j >= len(nums2)হয়, তবে0রিটার্ন করুন। max(nums2[j] + g(j+2), g(j+1))রিটার্ন করুন।
- যদি
- মূল মেথড থেকে
max(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