其他分享
首页 > 其他分享> > 多数元素

多数元素

作者:互联网

多数元素

Leetcode169 简单
题目描述:

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。

思路:抵消思想(摩尔投票法),哈哈哈,想到了动物世界里面李易峰帅气的推理。
回归正题,

  1. 定义变量count=1,temp=arr[0],temp作为比较数之一,一直和数组中的其他元素进行比较。
  2. 从数组第二个元素开始比较,如果与temp相同,则count+1,若不同则count-1; 当count=0时,就选择刚刚与temp比较的数作为新的temp,并重置count=1。
  3. 重复上面的过程,直到遍历完整个数组。返回此时的temp.
/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function (nums) {
    let count = 1,
        temp = nums[0];
    for (let i = 1, len = nums.length; i < len; i++) {
        if (count > 0) {
            if (temp == nums[i]) {
                count++
            } else {
                count--
            }
        } else {
            temp = nums[i];
            count = 1;
        }
    }
    return temp;
};

标签:count,temp,nums,元素,数组,多数
来源: https://blog.csdn.net/weixin_42123213/article/details/112917762