我正在尝试找出以下代码的复杂度,由于for
循环,它将是O(n * 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();
}
有人能帮我理解上述代码和Java 8中map.merge()
的时间复杂度吗?
for(int a: A) map.merge(K - a, 1, Integer::sum);
而自从 Java 7,你不需要在实例化时重复类型参数:Map<Integer, Integer> map = new HashMap<>();
- Holger