1)题目:已知一个整数序列A=(a0,a1...an),其中0<=ai<n(0<=i<n),若存在ap1=ap2.....=apm=x,且m>n/2(0<=pk<n,1<=k<m),则称x为A的主元素,例如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素,假设A中的n个元素存在一个一维数组中,请设计一个尽可能高效的算法,找出A的主元素,则输出该元素,否则输出-1。
2)思路与代码:
源码中使用到的ArrrayList,是调用的是自己实现的ArrayList,自己实现的ArrayList源码地址:https://blog.youkuaiyun.com/u012441545/article/details/89667486
package com.sam.datastruct.arrayList;
import java.util.HashMap;
import java.util.Map;
public class P2_12 {
/*
* 思路:
* 时间复杂度O(n)
* 空间复杂度O(1)*/
public Integer function(int[] s){
if (s.length == 0) {
return -1;
}
if(s.length == 1){
return s[0];
}
Map<Integer, Integer> count = new