Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.
You may assume that the array is non-empty and the majority element always exist in the array.
从数组中找到出现次数多于一般的元素。题目中有两个限定条件,一个是非空,另一个是肯定有一个元素出现次数多余一半。这种情况下我们可以用Moore voting algorithm。每找出两个不同的元素,成对的删除,最终剩下的一定就是出现次数最多的。时间复杂度为O(n)。代码如下:
You may assume that the array is non-empty and the majority element always exist in the array.
从数组中找到出现次数多于一般的元素。题目中有两个限定条件,一个是非空,另一个是肯定有一个元素出现次数多余一半。这种情况下我们可以用Moore voting algorithm。每找出两个不同的元素,成对的删除,最终剩下的一定就是出现次数最多的。时间复杂度为O(n)。代码如下:
public class Solution {
public int majorityElement(int[] nums) {
int count = 0;
int current = 0;
for(int i : nums) {
if(count == 0) {
current = i;
count ++;
} else if(current == i) {
count ++;
} else {
count --;
}
}
return current;
}
}