मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी A है, हमें सरणी को निम्नलिखित तरीके से संशोधित करना होगा -
हम एक i चुन सकते हैं और A[i] को -A[i] से बदल सकते हैं, और हम इस प्रक्रिया को K बार दोहराएंगे। हमें इस तरह से बदलने के बाद सरणी का सबसे बड़ा संभव योग वापस करना होगा।
तो, अगर एरे ए =[4,2,3], और के =1, तो आउटपुट 5 होगा। तो इंडेक्स 1 चुनें, एरे [4,-2,3]
बन जाएगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सरणी A को क्रमित करें
-
मैं के लिए 0 से लेकर ए - 1 की लंबाई तक के लिए
-
अगर A[i] <0, तो A[i] :=- A[i], और k को 1 से घटाएं
-
अगर k =0, तो लूप से ब्रेक करें
-
-
अगर k सम है, तो
-
सपा:=ए[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