Skip to content

Latest commit

 

History

History
89 lines (58 loc) · 1.65 KB

File metadata and controls

89 lines (58 loc) · 1.65 KB

English Version

题目描述

如果数组中多一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。

示例 1:

输入:[1,2,5,9,5,9,5,5,5]
输出:5

 

示例 2:

输入:[3,2]
输出:-1

 

示例 3:

输入:[2,2,1,1,1,2,2]
输出:2

 

说明:
你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内完成吗?

解法

摩尔投票法

Python3

Java

JavaScript

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function(nums) {
    let candidate = 0, count = 0;
    for (let num of nums) {
        if (count == 0) candidate = num;
        if (candidate == num) {
            count++;
        } else {
            count--;
        }
    }
    let n = 0;
    for (let num of nums) {
        if (candidate == num) n++;
    }
    return n > (nums.length / 2) ? candidate : -1;
};

...