Given an array of size n,
find the majority element. The majority element is the element that appears more than ⌊
n/2 ⌋
times.
思路:
方法一:将数组排序,最中间的那个数就是您要找的数。
方法二:用了两个辅助变量。
k用于临时存储数组中的数据,j用于存储某个数出现的次数。
开始时k存储数组中的第一个数,j为0,如果数组出现的数于k相等,则j加1,否则就减1,如果j为0,就把当前数组中的数赋给k
因为指定的数出现的次数大于数组长度的一半,所有j++与j--相抵消之后,最后j的值是大于等于1的,k中存的那个数就是出现最多的那个数。
代码:
public
class Solution {
public int majorityElement(int[] num) {
int x = num[0];
int mark = 1;
for (int i = 1; i < num.length; ++i)
{
if (mark == 0)
{
mark = 1;
x = num[i];
}
else if (num[i] == x)
{
mark++;
}
else if (num[i] != x)
{
mark--;
}
}
return x;
}
}