题解 | #农场牛类别匹配#
农场牛类别匹配
https://www.nowcoder.com/practice/270db1e1d65b4366a49a517ec7822912
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,如果存在则匹对数量加一,并判断对应重复的个数有多少个,如果只有一个则删除相应的键值,如果有多个,则相对应的值减一。