解题思路:
1.cnt记录相同元素出现的次数,初始值为1,times=(int)arr.length*0.25;
2.遍历数组,如果当前元素和上一个元素相等,则cnt加1
3.如果当前元素和上一个元素不相等,则cnt置为1
4.如果cnt>times,则找到了此元素,直接返回即可
时间复杂度O(n)
空间复杂度O(1)
代码实现:
class Solution {
public int findSpecialInteger(int[] arr) {
int len=arr.length;
int times=(int)(len*0.25);
int cnt=1;
for(int i=1;i<len;++i){
if(arr[i-1]==arr[i]){
cnt++;
}
else{
cnt=1;
}
if(cnt>times){
return arr[i];
}
}
return arr[0];
}
}