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.
题目含义:找到一个数组中,个数超过总个数一半的那个数!!!!
注意:1、数组非空 2、这个数一定存在!!!!
package leetcode;
//这道题目是有约束的,该数组中一定存在这样的数,才能用Moore's Voting Algorithm!
//否则找出的结果不正确!!
//即要先判断是否存在,然后再找~
//Moore's Voting Algorithm:http://www.cs.utexas.edu/~moore/best-ideas/mjrty/index.html
public class MajorityElement {
public int majorityElement(int[] nums) {
int count = 0;
int majorityElement = nums[0]; //先令第一个数为这个marjor
for (int x : nums) {
if (x == majorityElement) {
++count;
} else {
--count;
}
if(count == 0){
majorityElement = x;
count = 1;
}
}
return majorityElement;
/* Arrays.sort(nums); //简单方法,但是排序,时间复杂度 nlogn ;可以做
return nums[nums.length/2];*/
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}