मान लीजिए हमारे पास nums नामक तत्वों की एक लिस्ट है और हमारे पास एक और मान k है। अब एक ऑपरेशन पर विचार करें जहां हम nums से एक तत्व चुनते हैं और उसे नेगेट करते हैं। हम ठीक k संख्या में ऑपरेशन कर सकते हैं। हमें अधिकतम परिणामी योग ढूंढना है जो उत्पन्न किया जा सकता है।
उदाहरण के लिए, यदि इनपुट है nums = [2, 1, -6, -2], k = 3, तो आउटपुट होगा 9, यदि हम -6 और -2 और 1 को नेगेट करते हैं तो हमें [2, -1, 6, 2] मिलेगा और इसका योग 9 है।
समाधान दृष्टिकोण
लालची दृष्टिकोण: सबसे पहले सभी नेगेटिव संख्याओं को पॉजिटिव में बदलें (सबसे छोटी नेगेटिव से शुरू करके)। यदि ऑपरेशन बचते हैं और k विषम है, तो सबसे छोटे निरपेक्ष मान वाले तत्व को नेगेट करें।
numsको सॉर्ट करें।- नेगेटिव संख्याओं को पॉजिटिव में बदलें जब तक
k > 0। - यदि
kविषम है, तो कुल योग से2 * min(nums)घटाएं। - अन्यथा, कुल योग लौटाएं।
पायथन कार्यान्वयन
def solve(nums, k):
n = len(nums)
if n == 0:
return 0
nums.sort()
for idx in range(n):
if nums[idx] < 0 and k > 0:
k -= 1
nums[idx] *= -1
if k & 1 == 1:
return sum(nums) - 2 * min(nums)
return sum(nums)
nums = [2, 1, -6, -2]
k = 3
print(solve(nums, k))
इनपुट
[2, 1, -6, -2], 3
आउटपुट
9