从地图中消除负数并与其他正数相加的算法

时间:2014-04-11 06:53:53

标签: java algorithm groovy

我有一张像[key1:25, key2:20, key3:-30, key4:10, key5:-5]这样的地图(键/值对)。现在,我需要消除金额为负数的所有条目,并从其他条目中扣除这些金额:

所以这是一张有效的地图:[key1:20, key2:0, key4:0]

那么,是否有更好的解决方案,然后迭代整个地图并对每个负数量的正数进行求和。

最后,我还需要删除金额为0的条目..但是没关系,我可以遍历完整的地图一次并删除0的那些

2 个答案:

答案 0 :(得分:4)

简答:不。 鉴于地图上有无限制,没有比蛮力更好的方法了。 即使您寻找特定于语言的技巧,幕后,也应使用详尽搜索。

请注意,在地图上骑行是在 O(n)中,因此,即使您要对其进行排序或将地图转换为类似TreeMap的内容,也需要更多为O(n)

答案 1 :(得分:0)

我看到你的问题的方式你必须将它们全部添加并将结果放在地图中。你也不需要将它保存到同一个地图上。

Map<String, Integer> outputMap = new HashMap<String, Integer>();
int output = 0; 
for(Integer valinMap: inputMap) { 
   output += valinMap; 
}
outputMap.put("key1", output);

如果您的要求不同,请提及。