题解 | #农场牛群众数#
农场牛群众数
https://www.nowcoder.com/practice/de4e4039a45247579ffeef81ccf44266
考察的知识点:哈希;
解答方法分析:
- 创建一个空的哈希表,用于记录数字及其出现次数。
- 创建两个变量:amount和value,分别用于存储记录的最大次数和对应的数字。
- 创建一个长度与输入数组相同的空数组arr,用于存储每个元素的众数。
- 遍历输入数组nums的每个元素:在哈希表中获取当前数字nums[i]的出现次数。如果没有出现过,则使用getOrDefault方法将其次数设为0,并加1。如果出现过,则累加1。将获取到的出现次数count与amount进行比较:如果count大于amount,将value设为当前数字nums[i],amount设为count。如果count等于amount,将value更新为value和当前数字nums[i]的较大值。将value存储在数组arr的相应位置。
- 返回数组arr。
所用编程语言:C++;
完整编程代码:↓
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型vector */ vector<int> findMode(vector<int>& nums) { unordered_map<int, int> map; int amount = 0; int value = 0; vector<int> arr(nums.size()); for (int i = 0; i < nums.size(); i++) { map[nums[i]]++; int count = map[nums[i]]; if (count > amount) { value = nums[i]; amount = count; } else if (count == amount) { value = max(value, nums[i]); } arr[i] = value; } return arr; } };