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