Total Accepted: 122095
Total Submissions: 289750
Difficulty: Easy
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.
方法一:
将数组排序,然后中间位置的数字一定为次数大于n/2次的数。
import java.util.*;
public class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
int m = nums.length;
return nums[m/2];
}
}
方法二:
每找出两个不同的element,则成对删除。最终剩下的一定就是所求的。
可扩展到⌊ n/k ⌋的情况,每k个不同的element进行成对删除。
import java.util.*;
public class Solution {
public int majorityElement(int[] nums) {
int count = 0;
int candidate = 0;
for(int i = 0 ; i < nums.length; i++) {
if(count == 0) {
candidate = nums[i];
count ++;
} else if(candidate == nums[i]) {
count ++;
} else if(candidate != nums[i]) {
count --;
}
}
return candidate;
}
}