File tree 4 files changed +100
-0
lines changed
4 files changed +100
-0
lines changed Original file line number Diff line number Diff line change @@ -119,6 +119,27 @@ var findNthDigit = function (n) {
119
119
};
120
120
```
121
121
122
+ ### ** C++**
123
+
124
+ ``` cpp
125
+ class Solution {
126
+ public:
127
+ int findNthDigit(int n) {
128
+ int digit = 1;
129
+ long long start = 0;
130
+ long long count = 10;
131
+ while (n > count) {
132
+ n -= count;
133
+ ++digit;
134
+ start = start == 0 ? 10 : start * 10;
135
+ count = 9 * start * digit;
136
+ }
137
+ long long num = start + n / digit;
138
+ return to_string(num)[ n % digit] - '0';
139
+ }
140
+ };
141
+ ```
142
+
122
143
### **...**
123
144
124
145
```
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int findNthDigit (int n) {
4
+ int digit = 1 ;
5
+ long long start = 0 ;
6
+ long long count = 10 ;
7
+ while (n > count) {
8
+ n -= count;
9
+ ++digit;
10
+ start = start == 0 ? 10 : start * 10 ;
11
+ count = 9 * start * digit;
12
+ }
13
+ long long num = start + n / digit;
14
+ return to_string (num)[n % digit] - ' 0' ;
15
+ }
16
+ };
Original file line number Diff line number Diff line change @@ -88,6 +88,41 @@ var translateNum = function (num) {
88
88
};
89
89
```
90
90
91
+ ### ** C++**
92
+
93
+ 注释的代码是一维 dp ,因为 ` dp[i] ` 只依赖 ` dp[i - 1] ` 和 ` dp[i - 2] ` ,所以可以进一步压缩空间。
94
+
95
+ ``` cpp
96
+ class Solution {
97
+ public:
98
+ int translateNum(int num) {
99
+ // string s = to_string(num);
100
+ // int n = s.size();
101
+ // vector<int > dp(n + 1);
102
+ // dp[ 0] = dp[ 1] = 1;
103
+ // for (int i = 2; i <= n; ++i) {
104
+ // dp[ i] = dp[ i - 1] ;
105
+ // if (s[ i - 2] == '1' || s[ i - 2] == '2' && s[ i - 1] < '6') {
106
+ // dp[ i] += dp[ i - 2] ;
107
+ // }
108
+ // }
109
+ // return dp[ n] ;
110
+ string s = to_string(num);
111
+ int n = s.size();
112
+ int dp_0 = 1, dp_1 = 1, dp_2 = 1;
113
+ for (int i = 2; i <= n; ++i) {
114
+ dp_2 = dp_1;
115
+ if (s[ i - 2] == '1' || s[ i - 2] == '2' && s[ i - 1] < '6') {
116
+ dp_2 += dp_0;
117
+ }
118
+ dp_0 = dp_1;
119
+ dp_1 = dp_2;
120
+ }
121
+ return dp_2;
122
+ }
123
+ };
124
+ ```
125
+
91
126
### **...**
92
127
93
128
```
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int translateNum (int num) {
4
+ // string s = to_string(num);
5
+ // int n = s.size();
6
+ // vector<int> dp(n + 1);
7
+ // dp[0] = dp[1] = 1;
8
+ // for (int i = 2; i <= n; ++i) {
9
+ // dp[i] = dp[i - 1];
10
+ // if (s[i - 2] == '1' || s[i - 2] == '2' && s[i - 1] < '6') {
11
+ // dp[i] += dp[i - 2];
12
+ // }
13
+ // }
14
+ // return dp[n];
15
+ string s = to_string (num);
16
+ int n = s.size ();
17
+ int dp_0 = 1 , dp_1 = 1 , dp_2 = 1 ;
18
+ for (int i = 2 ; i <= n; ++i) {
19
+ dp_2 = dp_1;
20
+ if (s[i - 2 ] == ' 1' || s[i - 2 ] == ' 2' && s[i - 1 ] < ' 6' ) {
21
+ dp_2 += dp_0;
22
+ }
23
+ dp_0 = dp_1;
24
+ dp_1 = dp_2;
25
+ }
26
+ return dp_2;
27
+ }
28
+ };
You can’t perform that action at this time.
0 commit comments