Skip to content

Commit 3ba5b20

Browse files
authored
Update number-of-digit-one.cpp
1 parent fddb1bf commit 3ba5b20

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

C++/number-of-digit-one.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@
22
// Space: O(1)
33

44
class Solution {
5+
public:
6+
int countDigitOne(int n) {
7+
int64_t pivot = 1;
8+
int result = 0;
9+
while (n >= pivot) {
10+
result += n / (10 * pivot) * pivot +
11+
min(pivot, max(n % (10 * pivot) - pivot + 1, 0l));
12+
pivot *= 10;
13+
}
14+
return result;
15+
}
16+
};
17+
18+
// Time: O(logn) = O(1)
19+
// Space: O(1)
20+
class Solution2 {
521
public:
622
int countDigitOne(int n) {
723
const int k = 1;

0 commit comments

Comments
 (0)