-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path400 Nth Digit.py
46 lines (35 loc) · 920 Bytes
/
400 Nth Digit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""
Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...
Note:
n is positive and will fit within the range of a 32-bit signed integer (n < 231).
Example 1:
Input:
3
Output:
3
Example 2:
Input:
11
Output:
0
Explanation:
The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.
Author: Rajeev Ranjan
"""
class Solution(object):
def findNthDigit(self, n):
"""
Math, quotient and remainder
:type n: int
:rtype: int
"""
digit_cnt = 1
num_cnt = 9
while n > digit_cnt * num_cnt:
n -= digit_cnt * num_cnt
digit_cnt += 1
num_cnt *= 10
n -= 1 # debugging: without -1, it just pass over the target digit
q, r = n / digit_cnt, n % digit_cnt
target = num_cnt / 9 + q
return int(str(target)[r])