ধরি A একটি ইন্টিজার অ্যারে। আমরা অ্যারেটি নিচের মত পরিবর্তন করব: একটি i বেছে নিয়ে A[i]-কে -A[i]-তে রূপান্তর করব, এবং এই প্রক্রিয়া K বার করব। পরিবর্তনের পর অ্যারেয়ের সর্বোচ্চ সম্ভাব্য যোগফল রিটার্ন করতে হবে।
উদাহরণ
A = [4,2,3], K = 1 -> আউটপুট: 5 (ইনডেক্স 1 বেছে নিলে [4,-2,3] হয়)
সমাধানের ধাপসমূহ
- অ্যারে A সর্ট করুন
- i = 0 থেকে len(A)-1 পর্যন্ত লুপ:
- যদি A[i] < 0, তবে A[i] := -A[i], K := K - 1
- যদি K == 0, তবে ব্রেক
- যদি K জোড় (even) হয়:
- sp := A[0]
- i = 1 থেকে len(A)-1 পর্যন্ত: যদি A[i] > 0, sp := min(sp, A[i])
- sum(A) - (2*sp) রিটার্ন করুন
- অন্যথায় 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