假设我有一个包含 10 个数字的数组,其绝对值范围可以从 1 到 10。值可以重复。这方面的一个例子可能是
{2, 4, 2, 6, 9, 10, 1, 7, 6, 3}.
我们可以为这些数字中的每一个分配一个正号或负号,但每个组合中应该始终有 5 个负数和 5 个正数,例如
{-2, -4, 2, -6, 9, 10, 1, 7, -6, -3}
{2, -4, -2, 6, -9, 10, -1, 7, -6, 3}
是遵循此规则的可能排列。
我想在给定集合的半正和半负值的所有可能排列中找到其值最接近 0 的最小正或负和。
有什么建议么?我觉得这个问题在计算上非常密集,我不确定是否有一个不是蛮力的解决方案(例如枚举所有排列,然后应用最接近的 3Sum 的变体)。