Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
youhusky committed Oct 31, 2017
1 parent 0b4bb2d commit 3c9898b
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions 277. Find the Celebrity.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there may exist one celebrity. The definition of a celebrity is that all the other n - 1 people know him/her but he/she does not know any of them.

# Now you want to find out who the celebrity is or verify that there is not one. The only thing you are allowed to do is to ask questions like: "Hi, A. Do you know B?" to get information of whether A knows B. You need to find out the celebrity (or verify there is not one) by asking as few questions as possible (in the asymptotic sense).

# You are given a helper function bool knows(a, b) which tells you whether A knows B. Implement a function int findCelebrity(n), your function should minimize the number of calls to knows.

# Note: There will be exactly one celebrity if he/she is in the party. Return the celebrity's label if there is a celebrity in the party. If there is no celebrity, return -1.

# The knows API is already defined for you.
# @param a, person a
# @param b, person b
# @return a boolean, whether a knows b
# def knows(a, b):

class Solution(object):
def findCelebrity(self, n):
"""
:type n: int
:rtype: int
"""
candidate = 0
# find candidate
for i in range(n):
if knows(candidate, i):
candidate = i

# check candidate knows anybody
for i in range(candidate):
if knows(candidate,i):
return -1

# check anyone knows candidate
for i in range(n):
if not knows(i, candidate):
return -1
return candidate

0 comments on commit 3c9898b

Please sign in to comment.