import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param breeds int整型一维数组 * @param target_sum int整型 * @return int整型 */ public int countMatchingPairs (int[] breeds, int target_sum) { // write code here Map<Integer, Integer> map = new HashMap<>(); int amount = 0; for (int breed : breeds) { if (map.containsKey(target_sum - breed)) { amount++; if (map.get(target_sum - breed) == 1) { map.remove(target_sum - breed); } else { map.put(target_sum - breed, map.get(target_sum - breed) - 1); } } else { map.put(breed, map.getOrDefault(breed, 0) + 1); } } return amount; } }
本题考察的知识点是哈希表的应用,所用编程语言是java。
我们以数组每个值作为键值,数组相同数的个数作为对应值,然后每次判断是否存在键值为target_sum-breed,如果存在则匹对数量加一,并判断对应重复的个数有多少个,如果只有一个则删除相应的键值,如果有多个,则相对应的值减一。