【发布时间】:2017-11-13 09:35:23
【问题描述】:
我试图找出下面代码的复杂性,因为 for 循环它将是 O(n * complexity_of_map.merge)
public int solution(int K, int[] A) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i =0; i < A.length; i++){
map.merge(K - A[i], 1, Integer::sum);
}
return Arrays.stream(A).map(element -> map.getOrDefault(element,0)).sum();
}
谁能帮我理解上面代码的时间复杂度和map.merge()
在 Java 8 中。
【问题讨论】:
-
你想为此写一个minimal reproducible example。
-
@pvg 回答这个问题需要哪些额外信息?
-
只是一些风格说明。从 Java 5 开始,您可以使用 for-each:
for(int a: A) map.merge(K - a, 1, Integer::sum);,从 Java 7 开始,您无需在实例化时重复类型参数:Map<Integer, Integer> map = new HashMap<>();
标签: java algorithm merge java-8