题目

使用Map遍历一遍链表,找到大于长度一半的元素。

var majorityElement = function(nums) {
  if(nums.length===1)return nums[0];
  let half = nums.length / 2;
  let map = new Map();
  for(const ele of nums){
    const temp = map.get(ele);
    if(temp===undefined){
      map.set(ele,1);
    }else{
      if(temp+1>half)return ele;
      map.set(ele,temp+1);
    }
  }
};

排序数组后,数组中间的元素出现的次数一定大于数组长度的一半。

var majorityElement = function(nums) {
  nums.sort((x,y)=>x-y);
  return nums[Math.floor(nums.length / 2)];
};