Skip to content

Commit 3d18c58

Browse files
committedSep 5, 2019
2019-09-04
1 parent 3a77bb5 commit 3d18c58

File tree

3 files changed

+43
-30
lines changed

3 files changed

+43
-30
lines changed
 
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# The knows API is already defined for you.
2+
# @param a, person a
3+
# @param b, person b
4+
# @return a boolean, whether a knows b
5+
# def knows(a, b):
6+
7+
class Solution(object):
8+
def findCelebrity(self, n):
9+
"""
10+
:type n: int
11+
:rtype: int
12+
"""
13+
celebrity = 0
14+
for i in range(1, n):
15+
if knows(celebrity, i):
16+
#说明当前的这个celebrity肯定不是名人,因为他认识别的人
17+
celebrity = i
18+
# 到这里的 celebrity,必定不认识 [celebrity + 1, n - 1]的所有人
19+
for i in range(celebrity):
20+
if knows(celebrity, i): # 为了确保celebrity 不认识 [0, celebrity - 1]
21+
return -1
22+
23+
for i in range(n):
24+
if not knows(i, celebrity): # 为了确保 每个人都认识 celebrity
25+
return -1
26+
return celebrity
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
1-
21
# The isBadVersion API is already defined for you.
32
# @param version, an integer
43
# @return a bool
54
# def isBadVersion(version):
6-
import math
5+
76
class Solution(object):
87
def firstBadVersion(self, n):
98
"""
109
:type n: int
1110
:rtype: int
1211
"""
13-
start = 1
14-
end = n
15-
while(end-start>1):
16-
mid = start + (end-start)/2
12+
left, right = 1, n
13+
while left < right:
14+
mid = (left + right) // 2
1715
if isBadVersion(mid):
18-
end = mid
16+
right = mid
1917
else:
20-
start = mid
21-
print start, end
22-
return start if isBadVersion(start) else end
18+
left = mid + 1
19+
return left
+10-20
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,19 @@
1-
from collections import deque
21
class Solution(object):
32
def numSquares(self, n):
43
"""
54
:type n: int
65
:rtype: int
76
"""
8-
record = []
9-
for i in range(1, int(n ** 0.5) + 1):
10-
record.append(i * i)
11-
# print record
7+
from collections import deque
8+
queue = deque([(0, 0)])
129
visited = set()
13-
q = deque()
14-
q.append([0, 0])
15-
while(q):
16-
m, cnt = q.popleft()
17-
18-
for num in record:
19-
s = m + num
10+
while queue:
11+
cur, step = queue.popleft()
12+
for i in range(1, int(n ** 0.5) + 1):
13+
s = cur + i ** 2
2014
if s == n:
21-
return cnt + 1
22-
if s < n and s not in visited:
15+
return step + 1
16+
if s not in visited:
2317
visited.add(s)
24-
q.append([s, cnt + 1])
25-
# return
26-
27-
28-
29-
18+
queue.append((s, step + 1))
19+

0 commit comments

Comments
 (0)
Please sign in to comment.