Skip to content

Commit 2f5bb79

Browse files
authored
Binary Search example
1 parent 54cfc2f commit 2f5bb79

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

LeetCode/878.nth-magical-number.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import math
2+
3+
def countMultiples(x, a, b):
4+
'''returns # of multiples of a or b in range [1, x]'''
5+
lcm = a * b // math.gcd(a, b)
6+
return x//a + x//b - x//lcm # x/2 + x/3 - x/6
7+
8+
class Solution:
9+
def nthMagicalNumber(self, n: int, a: int, b: int) -> int:
10+
# a = 2, b = 3 in our case
11+
lo, hi = 1, min(a, b) * n # hi = 2*n remember?
12+
while lo < hi:
13+
mid = (lo + hi) >> 1
14+
if countMultiples(mid, a, b) < n:
15+
lo = mid + 1
16+
else:
17+
hi = mid
18+
19+
return hi % (10**9 + 7)
20+

0 commit comments

Comments
 (0)