思路清楚了,下不了笔emm

力扣的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保持不变,继续向下走就可以了。

想要的效果:
就尽量的缩短空间复杂度,不想将每一个数字都进行计数。

int findSpecialInteger(int* arr, int arrSize){
      int a = arr[0],num=1,i=1;
      while(i<arrSize)
      {
          if(arr[i] == a)
          {
              num++;
              if(num*1.0/arrSize >= 0.25)
                  break;
          }
          else
          {
              a = arr[i];
              num = 1;
          }
          i++;
      }
      return a;
}