কম্পিউটার টিউটোরিয়াল

পাইথনে যেকোনো সাব-অ্যারেতে সর্বোচ্চ অ্যাবসোলিউট যোগফল বের করার প্রোগ্রাম


মান লিজিয়ে আমাদের একটি অ্যারে আছে 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 := 0

  • i = 0 থেকে n-1 পর্যন্ত:

    • যদি temp < 0 হয়, তবে temp := 0

    • temp := temp + nums[i]

    • ans := max(ans, abs(temp))

  • temp := 0

  • i = 0 থেকে n-1 পর্যন্ত:

    • যদি temp > 0 হয়, তবে temp := 0

    • temp := 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

  1. পাইথনে ট্রির নন-এডজেসেন্ট নোডের সর্বোচ্চ যোগফল খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে সর্বোচ্চ সমষ্টিয়ুক্ত সন্নিবিষ্ট সাবলিস্টের সমষ্টি খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে সার্কুলার তালিকায় সর্বোচ্চ সাবলিস্ট সমষ্টি খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে ব্যালেন্সড প্যারেনথেসিসের সর্বোচ্চ গ্রুপ সংখ্যা খুঁজে বের করার প্রোগ্রাম