对应leetcode169题多数元素的一种算法实现
题目描述:
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入: nums = [3,2,3]
输出: 3
思路:
因为该元素出现的次数大于 ⌊ n/2 ⌋所以出现次数一定大于其它数出现次数的和
- 定义一个候选数和他出现的次数(count)(如nums[0]和1)
- 遍历nums数组剩余的所有元素,通过对比当前元素与初始数的值,若相等则令次数+1,不等则+1,同时在判断之前对count进行判断,如果count为0则将当前值赋值给候选数
- 遍历完之后,候选数即为最终需要的结果
代码实现:
var majorityElement = function(nums) {
let count = 1
let curMax = nums[0]
for(let i = 1; i<nums.length;i++) {
// 先判断
if(count ===0){
curMax = nums[i]
}
// 判断当前元素和候选数
if(nums[i]===curMax){
count++
}else{
count--
}
}
return curMax
};