原題鏈接:
https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/
解題思路:
- 假設(shè)輸入:
[1, 2, 3, 2, 2, 2, 5, 4, 2]
谓苟,多數(shù)元素為2
官脓。 - 使用
count
統(tǒng)計出現(xiàn)最多元素的次數(shù),result
緩存多數(shù)元素娜谊。 - 遍歷數(shù)組确买,如果出現(xiàn)
result
與nums[i]
不同,則將count
計數(shù)相抵消纱皆。 - 最終剩下的
result
只會是最多數(shù)量的元素2
湾趾。
/**
* @param {number[]} nums
* @return {number}
*/
var majorityElement = function(nums) {
let result = nums[0] // 緩存結(jié)果,從第一個值開始查找
let count = 1 // 第一次查找計數(shù)為1
for (let i = 1; i < nums.length; i++) {
// 如果當(dāng)前有計數(shù)派草,則在當(dāng)前基礎(chǔ)上繼續(xù)統(tǒng)計
if (count > 0) {
// 如果result與nums[i]相同搀缠,則累加一個。
// 不同則減少一個
count += result === nums[i] ? 1 : -1
} else if (count === 0) {
// 如果count被清零近迁,則重新開始統(tǒng)計
result = nums[i]
count = 1
}
}
return result
};