Skip to content

Commit 80d117e

Browse files
committed
feat: add rust solution to lcof problem: No.49
面试题49. 丑数
1 parent 1a6245d commit 80d117e

File tree

3 files changed

+61
-6
lines changed

3 files changed

+61
-6
lines changed

lcof/面试题49. 丑数/README.md

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,18 @@ public:
111111
* @return {number}
112112
*/
113113
var nthUglyNumber = function (n) {
114-
let dp = [1];
114+
const dp = [1];
115115
let p2 = 0,
116116
p3 = 0,
117117
p5 = 0;
118118
for (let i = 1; i < n; ++i) {
119119
const next2 = dp[p2] * 2,
120120
next3 = dp[p3] * 3,
121121
next5 = dp[p5] * 5;
122-
dp[i] = Math.min(next2, Math.min(next3, next5));
122+
dp[i] = Math.min(next2, next3, next5);
123123
if (dp[i] == next2) ++p2;
124124
if (dp[i] == next3) ++p3;
125125
if (dp[i] == next5) ++p5;
126-
dp.push(dp[i]);
127126
}
128127
return dp[n - 1];
129128
};
@@ -160,6 +159,37 @@ func min(a, b int) int {
160159
}
161160
```
162161

162+
### **Rust**
163+
164+
```rust
165+
impl Solution {
166+
pub fn nth_ugly_number(n: i32) -> i32 {
167+
let n = n as usize;
168+
let mut dp = vec![1; n];
169+
let mut p2 = 0;
170+
let mut p3 = 0;
171+
let mut p5 = 0;
172+
for i in 1..n {
173+
let n2 = dp[p2] * 2;
174+
let n3 = dp[p3] * 3;
175+
let n5 = dp[p5] * 5;
176+
dp[i] = n2.min(n3.min(n5));
177+
178+
if dp[i] == n2 {
179+
p2 += 1;
180+
};
181+
if dp[i] == n3 {
182+
p3 += 1;
183+
};
184+
if dp[i] == n5 {
185+
p5 += 1;
186+
};
187+
}
188+
dp[n - 1]
189+
}
190+
}
191+
```
192+
163193
### **...**
164194

165195
```

lcof/面试题49. 丑数/Solution.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,18 @@
33
* @return {number}
44
*/
55
var nthUglyNumber = function (n) {
6-
let dp = [1];
6+
const dp = [1];
77
let p2 = 0,
88
p3 = 0,
99
p5 = 0;
1010
for (let i = 1; i < n; ++i) {
1111
const next2 = dp[p2] * 2,
1212
next3 = dp[p3] * 3,
1313
next5 = dp[p5] * 5;
14-
dp[i] = Math.min(next2, Math.min(next3, next5));
14+
dp[i] = Math.min(next2, next3, next5);
1515
if (dp[i] == next2) ++p2;
1616
if (dp[i] == next3) ++p3;
1717
if (dp[i] == next5) ++p5;
18-
dp.push(dp[i]);
1918
}
2019
return dp[n - 1];
2120
};

lcof/面试题49. 丑数/Solution.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
impl Solution {
2+
pub fn nth_ugly_number(n: i32) -> i32 {
3+
let n = n as usize;
4+
let mut dp = vec![1; n];
5+
let mut p2 = 0;
6+
let mut p3 = 0;
7+
let mut p5 = 0;
8+
for i in 1..n {
9+
let n2 = dp[p2] * 2;
10+
let n3 = dp[p3] * 3;
11+
let n5 = dp[p5] * 5;
12+
dp[i] = n2.min(n3.min(n5));
13+
14+
if dp[i] == n2 {
15+
p2 += 1;
16+
};
17+
if dp[i] == n3 {
18+
p3 += 1;
19+
};
20+
if dp[i] == n5 {
21+
p5 += 1;
22+
};
23+
}
24+
dp[n - 1]
25+
}
26+
}

0 commit comments

Comments
 (0)