今天看面試題看到了阿里的明星問題,覺得大家說的太高深了,說一下我的解法吧:
題目:有N個人,其中一個明星和n-1個群眾,群眾都認識明星,明星不認識任何群眾,群眾和群眾之間的認識關系不知道,現在如果你是機器人R2T2,你每次問一個人是否認識另外一個人的代價為O(1),試設計一種算法找出明星,并給出時間復雜度(沒有復雜度不得分)。
我的解法( 復雜度O(n) ):
// bool known(A, B) 問A認識B不?
Person persons[n];
// init persons
Person p = persons[0];
for(
int i = 1; i < n; i++) {
if(!known(persons[i], p)) {
// 不認識,說明p不是明星
p = persons[i];
}
// else 認識,說明persons[i]不是明星
}
// p 就是所求的明星