/* The knows API is defined in the parent class Relation.
boolean knows(int a, int b); */
public class Solution extends Relation {
public int findCelebrity(int n) {
int left = 0;
int right = n - 1;
// ่ฟ้ไธๅไบๅๆฅๆพ๏ผleftๆๅๆฏๅฏ่ฝend up็ญไบright็๏ผๅ ไธบไปไปฌๅฏ่ฝๅๆถ็งปๅจ
while (left + 1 < right) {
boolean ab = knows(left, right);
boolean ba = knows(right, left);
if (ab && ba) {
left++;
right--;
} else if (ab) {
left++;
} else {
right--;
}
}
boolean ab = knows(left, right);
boolean ba = knows(right, left);
if (ab || ba) {
int idx = ab ? right : left;
for (int i = 0; i < n; i++) {
if (i == idx) {
continue;
}
if (!knows(i, idx) || knows(idx, i)) {
return -1;
}
}
return idx;
}
return -1;
}
}