2020-04-27
主要元素
如果数组中多一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。
![](https://img2020.cnblogs.com/blog/1962579/202004/1962579-20200427155052341-1570737667.png)
题解:
思路1:哈希表
/** * @param {number[]} nums * @return {number} */ var majorityElement = function(nums) { if(nums.length === 1) return nums[0]; // 如果长度为1 返回唯一的一项 let obj = {}; // 记录hash的对象 let halfLen = Math.floor(nums.length / 2); // 记录nums长度的一半 例如 nums.length = 9 => 一半就是4.5 也就是大于4即可 for (let i = 0; i < nums.length; i++) { if(obj[nums[i]]) { obj[nums[i]]++; // 如果在hash表中存在 则累加 if(obj[nums[i]] > halfLen) return nums[i]; // 累加后判断是否大于一半 如果大于一半 那么满足要求的就是这个值 } else obj[nums[i]] = 1; // 如果不存在hash表里 初始化为1 } return -1; };