我被问到:用列表中的其他数字的总和替换数字不加减
用剩余元素的总和替换列表中的每个数字,列表不被排序。
因此,假设如果我们有一个像{2, 7, 1, 3, 8}
这样的数字列表,现在我们要用其余元素的总和替换每个元素。输出应该是:
{(7 + 1 + 3 + 8), (2 + 1 + 3 + 8), (2 + 7 + 3 + 8), (2 + 7 + 1 + 8), (2 + 7 + 1 + 3)}
== {19, 14, 20, 18, 13}
我回答一个显而易见的解决方案:
首先评估所有的数字sum
然后从sum
减去每个元素。 因此,对于上面所列内容sum
是2 + 7 + 1 + 3 + 8
= 21
,则输出不喜欢:
{sum - 2, sum - 7, sum - 1, sum - 3, sum - 8}
{21 - 2, 21 - 7, 21 - 1, 21 - 3, 21 - 8}
== {19, 14, 20, 18, 13}
它只需要两次迭代名单。
然后采访者问我:现在没有减法吗?我不能回答:(
是其他的解决方案可能吗?能有的份额任何其他把戏?一个更好的技巧是可能的吗?
让我们可以使用更多的内存空间(我问尝试几分钟后即使这样我也答不上来)。
正确的想法,错误的答案。您需要排除该元素,即第一个数组将为{0,2,9,10,13}。然后只需在每个位置添加元素。 – Joel
我同意,你的方式看起来更优雅。 –
*'然后添加适当的条目'*你的意思是在你的两个列表中说A1,A2的输出我应该加上'output [i] = A1 [i] + A2 [N-i]'?请进一步解决。给我更多的时间... –