多数元素
作者:互联网
多数元素
Leetcode169 简单
题目描述:
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
思路:抵消思想(摩尔投票法),哈哈哈,想到了动物世界里面李易峰帅气的推理。
回归正题,
- 定义变量
count=1,temp=arr[0]
,temp作为比较数之一,一直和数组中的其他元素进行比较。 - 从数组第二个元素开始比较,
如果与temp相同,则count+1,若不同则count-1
; 当count=0时,就选择刚刚与temp比较的数作为新的temp,并重置count=1。 - 重复上面的过程,直到遍历完整个数组。返回此时的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