我的世界做皮肤壁纸网站,手机网站设计通用尺寸,php作文网站源码,南昌网站搭建题目描述 给定一个大小为 n 的数组 nums #xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的#xff0c;并且给定的数组总是存在多数元素。 示例 1#xff1a; 输入#xff1a;nums [3,2,3]
输出#xff1a;3…题目描述 给定一个大小为 n 的数组 nums 返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的并且给定的数组总是存在多数元素。 示例 1 输入nums [3,2,3]
输出3 示例 2 输入nums [2,2,1,1,1,2,2]
输出2 解题方法分析
使用哈希算法HashMap来存储每个元素以及出现的次数。通过求解哈希映射中的每个键值对键表示一个元素值表示该元素出现的次数统计出数组出现的数字次数最多的那一过。
首先循环遍历数组 nums 并将数组中的每个元素加入哈希映射中。在这之后我们遍历哈希映射中的所有键值对返回值最大的键这样就可以通过哈希统计出出现次数最多的数字。
代码
class Solution {
public:int majorityElement(vectorint nums) {// 使用map来记录每个数字的出现次数std::mapint, int counts;// majority用于记录当前的多数元素cnt用于记录多数元素出现的次数int majority 0, cnt 0;// 遍历输入数组for (int num : nums) {// 将当前数字的出现次数加一counts[num];// 如果当前数字的出现次数超过之前记录的多数元素的次数if (counts[num] cnt) {// 更新多数元素和出现次数majority num;cnt counts[num];}}// 返回最终找到的多数元素return majority;}
};