for i=[0,n-1){ flag=false; //标识i是否认识敏感词人,如果有认识的人则标识为true for j=[1,n){ if(i认识j){ flag=true; break; }//end if }//end for //判断i是否有认识的人 if(flag==false) return i; //如果i在剩余的人中没有认识的人,则为明星 }//end for
result=0; //i=0,初始化 //初始化栈,入栈 for i=[1,n) { stack.push(i); }//end for while(!stack.isEmpty()){ temp=stack.pop(); //出栈 //判断结果 if(temp 认识 result) //result可能是明星 result=result; else //temp 不认识 result,则temp可能是明星 result=temp; }//end while
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
伪代码:
这样的时间复杂度是:o(n*2) 但是这种方法没有充分利用条件:1.如果是明星的话,那么肯定不认识群众;2.如果是群众肯定认识明星。所以: 对于1个判断: a与b最多两种可能:1、a认识b,那么a不可能是明星; 2、a不认识b那么b不可能是明星。即每一次比较都会识别一个。所以最多0(n-1)即可识别出哪个是明星: