题目:
思路:
人多就是硬,把所有的数分为两个部分,多数元素为一个部分,其他元素为一个部分,两者相互抵消,最后剩下的数一定是
步骤:
r
表示目标元素, c
表示目标元素的个数
遍历数组的时候,维护r
和 c
如果当前元素不等于目标元素nums[i] != r
, 个数c --
当c的个数为0的时候,将r换成nums[i]
,如果当期元素等目标值,个数c++
代码实现
var majorityElement = function(nums) {
let r = nums[0], c = 1;
for (let i = 1, len = nums.length; i < len; i ++) {
if (nums[i] !== r) {
c --;
if (c == 0) {
r = nums[i];
c = 1;
}
} else {
c ++;
}
}
return r;
};