ধরুন আমাদের nums নামক একটি অ্যারে আছে। আমাদের একটি সাবয়ারের পরম যোগফল খুঁজে বের করতে হবে [nums_l, nums_l+1, ..., nums_r-1, nums_r] হল |nums_l + nums_l+1 + ... + nums_r-1 + nums_r|। আমাদের সংখ্যার যেকোন সাবয়ারের সর্বোচ্চ পরম যোগফল খুঁজে বের করতে হবে (যে সাব্যারে সম্ভবত খালি হতে পারে)।
সুতরাং, যদি ইনপুটটি nums =[2,-4,-3,2,-6] এর মত হয়, তাহলে আউটপুট হবে 11 কারণ সাবয়ারে [2,-4,-3,2]-এর সর্বোচ্চ পরম সাবয়ারের যোগফল রয়েছে | 2 + (-4) + (-3) + 2| =11.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
n:=সংখ্যার আকার
-
উত্তর:=0, তাপমাত্রা:=0
-
আমি 0 থেকে n - 1 রেঞ্জের জন্য, করুন
-
যদি temp <0, তারপর
-
তাপমাত্রা:=0
-
-
temp:=temp + nums[i]
-
ans:=সর্বাধিক উত্তর এবং |temp|
-
-
তাপমাত্রা:=0
-
আমি 0 থেকে n - 1 রেঞ্জের জন্য, করুন
-
যদি temp> 0 হয়, তাহলে
-
তাপমাত্রা:=0
-
-
temp:=temp + nums[i]
-
ans:=সর্বাধিক উত্তর এবং |temp|
-
-
উত্তর ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums): n=len(nums) ans=0 temp=0 for i in range(n): if (temp<0): temp=0 temp=temp+nums[i] ans=max(ans,abs(temp)) temp=0 for i in range(n): if (temp>0): temp=0 temp=temp+nums[i] ans=max(ans,abs(temp)) return ans nums = [2,-4,-3,2,-6] print(solve(nums))
ইনপুট
[2,-4,-3,2,-6]
আউটপুট
11