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