描述
package simple;
public class MajorityElement {
public int majorityElement(int[] nums) {
// 如果是单元素数组,直接返回单元素
if (nums.length == 1) {
return nums[0];
}
// 遍历到n/2+1元素(+1是考虑到数组长度为奇数的情况)
for (int i = 0; i < nums.length / 2+1; i++) {
// 每个元素与之前的元素对比,如果重复,continue
boolean flag = false;
for (int j = 0; j < i; j++) {
if (nums[i] == nums[j]) {
flag = true;
break;
}
}
if (flag) {
continue;
}
int count = 0;
// 如果不重复,从当前元素往后遍历记录出现次数,大于n/2,返回
for (int k = i; k < nums.length; k++) {
if (nums[i] == nums[k]) {
count++;
}
if (count > nums.length / 2) {
return nums[i];
}
}
}
return -1;
}
}
测试结果