两遍 第一遍找出一个candidate 就是假如a 认识 b,b就是candidate,a 肯定不是, 每次把一个人和candidate比较 然后根据情况更新candidate
这样的话只能最后得到一个candidate 并且不会漏掉正确答案
然后第二遍验证这个candidate到底是不是正确答案
public class Solution extends Relation {
public int findCelebrity(int n) {
if ( n == 0 )
return -1;
int can = 0;
for ( int i = 1; i < n; i ++ ){
if ( !knows ( i, can ) )
can = i;
}
for ( int i = 0; i < n; i ++ ){
if ( i != can ){
if ( !knows ( i, can ) || knows ( can, i ))
return -1;
}
}
return can;
}
}