主要元素

2020-04-27
主要元素
如果数组中多一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。
题解:
思路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;
};
原文地址:https://www.cnblogs.com/lanpang9661/p/12787249.html