File tree 3 files changed +43
-30
lines changed
3 files changed +43
-30
lines changed Original file line number Diff line number Diff line change
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 number Diff line number Diff line change 1
-
2
1
# The isBadVersion API is already defined for you.
3
2
# @param version, an integer
4
3
# @return a bool
5
4
# def isBadVersion(version):
6
- import math
5
+
7
6
class Solution (object ):
8
7
def firstBadVersion (self , n ):
9
8
"""
10
9
:type n: int
11
10
:rtype: int
12
11
"""
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
17
15
if isBadVersion (mid ):
18
- end = mid
16
+ right = mid
19
17
else :
20
- start = mid
21
- print start , end
22
- return start if isBadVersion (start ) else end
18
+ left = mid + 1
19
+ return left
Original file line number Diff line number Diff line change 1
- from collections import deque
2
1
class Solution (object ):
3
2
def numSquares (self , n ):
4
3
"""
5
4
:type n: int
6
5
:rtype: int
7
6
"""
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 )])
12
9
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
20
14
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 :
23
17
visited .add (s )
24
- q .append ([s , cnt + 1 ])
25
- # return
26
-
27
-
28
-
29
-
18
+ queue .append ((s , step + 1 ))
19
+
You can’t perform that action at this time.
0 commit comments