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 : 用 hashmap 来存储每个数字出现的次数, 如果有一个次数超过 n/2 , 就返回。
思路 2 : 设置一个数字 和 次数, 如果相同, 则次数加一, 否则减一, 如果减到0, 就更新。
因此, 如果一个数字的出现次数超过一半, 他肯定会被保留下来。
public class Solution {
public int majorityElement(int[] num) {
if(num.length < 1)
return -1;
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int len = num.length;
for(int i = 0; i < len; i++){
if(map.containsKey(num[i])){
int times = map.get(num[i]);
map.put(num[i], times + 1);
if(times + 1 > len / 2)
return num[i];
}else{
map.put(num[i], 1);
if(len == 1)
return num[i];
}
}
return -1;
}
}
public class Solution {
public int majorityElement(int[] sum) {
int majority=sum[0];
int times=1;
for(int i=1;i<sum.length;i++)
{
if(majority==sum[i])
times++;
else
{
times--;
if(times==0)
{
times=1;
majority=sum[i];
}
}
}
return majority;
}
}