Skip to content

Commit 2b38318

Browse files
committed
src/bin/lexicographical-numbers.rs
1 parent dc0f120 commit 2b38318

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

src/bin/lexicographical-numbers.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ fn main() {}
33
struct Solution;
44

55
impl Solution {
6-
pub fn lexical_order(n: i32) -> Vec<i32> {
6+
pub fn lexical_order1(n: i32) -> Vec<i32> {
77
let mut s = (1..=n)
88
.into_iter()
99
.map(|x| x.to_string())
@@ -13,4 +13,27 @@ impl Solution {
1313

1414
s.into_iter().map(|x| x.parse::<i32>().unwrap()).collect::<Vec<i32>>()
1515
}
16+
17+
pub fn lexical_order(n: i32) -> Vec<i32> {
18+
let mut v = Vec::with_capacity(n as usize);
19+
20+
for i in 1..10.min(n + 1) {
21+
v.push(i);
22+
Self::dfs(&mut v, i, n);
23+
}
24+
v
25+
}
26+
27+
fn dfs(v: &mut Vec<i32>, number: i32, n: i32) {
28+
if number > n { return; }
29+
30+
let number = number * 10;
31+
32+
for i in 0..10 {
33+
if number + i <= n {
34+
v.push(number + i);
35+
Self::dfs(v, number + i, n);
36+
}
37+
}
38+
}
1639
}

0 commit comments

Comments
 (0)