मान लीजिए हमारे पास nums और multipliers नामक दो सूचियां हैं। अब एक ऑपरेशन पर विचार करें जहां हम nums से कोई भी संख्या हटा सकते हैं और multipliers से कोई भी संख्या हटा सकते हैं फिर उन्हें एक साथ गुणा कर सकते हैं। हमें इस ऑपरेशन को तब तक दोहराना है जब तक सूचियों में से एक खाली न हो जाए, हमें गुणा की गई संख्याओं का अधिकतम योग ढूंढना है।
तो, यदि इनपुट nums = [-4, 4, 3] multipliers = [-2, 2] है, तो आउटपुट 16 होगा, क्योंकि हम -4 को -2 से और 4 को 2 से मिला सकते हैं जिससे -4 * -2 + 4 * 2 मिलेगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
सूची nums को सॉर्ट करें
सूची multipliers को सॉर्ट करें
res := 0
यदि nums का आकार < multipliers का आकार, तो
nums और multipliers को स्वैप करें := multipliers, nums
n := nums का आकार
m := multipliers का आकार
i के लिए 0 से m - 1 तक की रेंज में, करें
यदि multipliers[i] <= 0, तो
res := res + nums[i] * multipliers[i]
अन्यथा,
res := res + multipliers[i] * nums[n - (m - i)]
res लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें
def solve(nums, multipliers):
nums.sort()
multipliers.sort()
res = 0
if len(nums) < len(multipliers):
nums, multipliers = multipliers, nums
n, m = len(nums), len(multipliers)
for i in range(m):
if multipliers[i] <= 0:
res += nums[i] * multipliers[i]
else:
res += multipliers[i] * nums[n - (m - i)]
return res
nums = [-4, 4, 3]
multipliers = [-2, 2]
print(solve(nums, multipliers))
इनपुट
[-4, 4, 3], [-2, 2]
आउटपुट
16