力扣的1287题
给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。
请你找到并返回这个整数
int findSpecialInteger(int* arr, int arrSize){
int i=0,j=0,sum=1;
while(j<=arrSize)
{
if(arr[j]==arr[i+sum])
{
sum=0;
while(arr[i]==arr[j+sum])
{
sum++;
i++;
}
}
j++;
}
return sum;}
思路如下:
首先进行判断arr[i]是否等于arr[i+sum],相等的时候就将sum置为零,进行计数,直至arr[i]不等于arr[i]时为止,计数停止。如果不相等,sum保持不变,继续向下走就可以了。
想要的效果:
就尽量的缩短空间复杂度,不想将每一个数字都进行计数。