Java 题解 | #农场牛类别匹配#
农场牛类别匹配
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 HashMap<Integer, Integer> counts = new HashMap<>(); // 哈希表,存储每个元素的出现次数 int matchingPairs = 0; // 匹配对的个数 for (int i = 0; i < breeds.length; ++i) { int breed = breeds[i]; int diff = target_sum - breed; // 计算目标值与该元素的差值 if (counts.containsKey(diff)) { matchingPairs += counts.get(diff); // 更新匹配对的个数 } counts.put(breed, counts.getOrDefault(breed, 0) + 1); // 存储当前元素的出现次数 } return matchingPairs; } }
使用的是Java语言。
该题考察的知识点是哈希表的使用和元素统计。
- 创建一个HashMap对象counts用于存储每个元素的出现次数,并初始化匹配对的个数matchingPairs为0。
- 使用for循环遍历给定的数组breeds。对于数组中的每个元素breed,计算目标值与该元素的差值diff。
- 如果counts哈希表中存在键为diff的元素,则将该元素的值加到matchingPairs中,表示找到了一对匹配的元素。
- 更新counts哈希表中键为breed的元素的值,用于记录当前元素的出现次数。如果counts哈希表中不存在键为breed的元素,使用getOrDefault方法获取默认值0,并将其加1。
- 遍历结束后,返回匹配对的个数matchingPairs。