首页 > 代码库 > iOS面试常见题

iOS面试常见题

1.耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13个人围坐一圈,从第一个人開始循环报数,数到三排除,最后剩下的人就是叛徒

int people[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};

int count = 0;//用来记录报数 

int number = 13;//记录活着的人数 

int i = 0;//记录第几个人正在报数

while (number > 1) {     

if (people[i] != 0) {        

count++; //假设a[i ]没有被剔除掉,报数有效    

} if (count == 3) {       

    people[i] = 0;//剔除掉,      

     count = 0;//报数清零        

   number--;//存活人数减一     

  }    

   i++;//记录报数的下一个人    

   if (i == 13) {        

   i = 0;// 当超出范围时,马上将报数人数置为第一人    

   }  

}    for (int i = 0; i < 13; i++) {     

  if (people[i] > 0) {         

  printf("叛徒是第%d人 ", people[i]);    

   } 

  }




2.有1000000个数,每一个数的取值范围都是0~999999,找出当中反复的数
#define COUNT 1000000

int main(void)
{
            inta[COUNT] = {0};
   for (int i = 0; i < COUNT; i++) {
       int number = arc4random()%COUNT;//把随机数作为下标,值作为出现次数
       a[number - 1] ++;
    }
   //输出反复的数字以及反复次数
   for(int i = 0 ;i < COUNT;i++){
       if (a[i] > 1) {
           printf("%d repeats %d times\n",i+1,a[i]);
       }
    }
            return0;
}

iOS面试常见题