Skip to content

Commit 19614e5

Browse files
committed
Create 2336-smallest-number-in-infinite-set.rs
1 parent 673dbb4 commit 19614e5

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
struct SmallestInfiniteSet {
2+
set: Vec<i32>,
3+
}
4+
5+
6+
/**
7+
* `&self` means the method takes an immutable reference.
8+
* If you need a mutable reference, change it to `&mut self` instead.
9+
*/
10+
impl SmallestInfiniteSet {
11+
12+
fn new() -> Self {
13+
SmallestInfiniteSet {
14+
set: (1..=1000).collect()
15+
}
16+
}
17+
18+
fn pop_smallest(&mut self) -> i32 {
19+
let mut ret = -1;
20+
for (i, num) in self.set.iter().enumerate() {
21+
if *num != 0 {
22+
ret = *num;
23+
self.set[i] = 0;
24+
break;
25+
}
26+
}
27+
ret
28+
}
29+
30+
fn add_back(&mut self, num: i32) {
31+
self.set[num as usize - 1] = num;
32+
}
33+
}
34+
35+
fn main() {
36+
let mut obj = SmallestInfiniteSet::new();
37+
obj.add_back(2);
38+
println!("{:?}", obj.pop_smallest());
39+
obj.add_back(2);
40+
println!("{:?}", obj.pop_smallest());
41+
obj.add_back(1);
42+
println!("{:?}", obj.pop_smallest());
43+
}

0 commit comments

Comments
 (0)