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

পাইথনে K বার নেগেশন দিয়ে অ্যারেয়ের যোগফল সর্বাধিক করা

ধরি A একটি ইন্টিজার অ্যারে। আমরা অ্যারেটি নিচের মত পরিবর্তন করব: একটি i বেছে নিয়ে A[i]-কে -A[i]-তে রূপান্তর করব, এবং এই প্রক্রিয়া K বার করব। পরিবর্তনের পর অ্যারেয়ের সর্বোচ্চ সম্ভাব্য যোগফল রিটার্ন করতে হবে।

উদাহরণ

A = [4,2,3], K = 1 -> আউটপুট: 5 (ইনডেক্স 1 বেছে নিলে [4,-2,3] হয়)

সমাধানের ধাপসমূহ

  1. অ্যারে A সর্ট করুন
  2. i = 0 থেকে len(A)-1 পর্যন্ত লুপ:
    • যদি A[i] < 0, তবে A[i] := -A[i], K := K - 1
    • যদি K == 0, তবে ব্রেক
  3. যদি K জোড় (even) হয়:
    • sp := A[0]
    • i = 1 থেকে len(A)-1 পর্যন্ত: যদি A[i] > 0, sp := min(sp, A[i])
    • sum(A) - (2*sp) রিটার্ন করুন
  4. অন্যথায় sum(A) রিটার্ন করুন

পাইথন কোড উদাহরণ

class Solution(object):
    def largestSumAfterKNegations(self, A, K):
        A.sort()
        for i in range(len(A)):
            if A[i] < 0:
                A[i] = -A[i]
                K -= 1
            if K == 0:
                break
        if K % 2:
            smallest_positive = A[0]
            for i in range(1, len(A)):
                if A[i] >= 0:
                    smallest_positive = min(smallest_positive, A[i])
            return sum(A) - (2 * smallest_positive)
        else:
            return sum(A)

ob1 = Solution()
print(ob1.largestSumAfterKNegations([3, -1, 0, 2], 3))

ইনপুট

[3, -1, 0, 2] 3

আউটপুট

6
  1. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  2. পাইথনে অ্যারের যোগফল বের করা

  3. পাইথনে accumulate ফাংশন ব্যবহার করে প্রিফিক্স সাম অ্যারে

  4. পাইথনে accumulate ফাংশন ব্যবহার করে প্রিফিক্স সাম অ্যারে (Duplicate)