题解 | #农场牛群众数#
农场牛群众数
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;
}
};


美的集团公司福利 783人发布