Nth Digit LeetCode solution in Java

1
class Solution {
2
public int findNthDigit(int n) {
3

4
if (n < 10) return n;
5

6
long currDigitIndex = 10;
7
int tillNextIncrease = 90;
8
int currNumberSize = 2;
9
int currNumber = 10;
10
int next = tillNextIncrease;
11

12
while (currDigitIndex < n) {
13

14
currNumber++;
15
currDigitIndex += currNumberSize;
16
next--;
17

18
if (next == 0) {
19
currNumberSize++;
20
tillNextIncrease *= 10;
21
next = tillNextIncrease;
22
}
23
}
24

25
int nthDigit = currNumber % 10;
26
if (currDigitIndex == n) {
27
while (currNumber != 0) {
28
nthDigit = currNumber % 10;
29
currNumber /= 10;
30
}
31
} else if (currDigitIndex > n) {
32

33
currNumber--;
34

35
while (currDigitIndex > n) {
36
currDigitIndex--;
37
nthDigit = currNumber % 10;
38
currNumber /= 10;
39
}
40
}
41

42
return nthDigit;
43
}
44
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0