File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments