59
60
kamyu104/src/main.rsCopy file name to clipboard Expand all lines: kamyu104/src/main.rs +1 Lines changed: 1 addition & 0 deletions Original file line number Diff line number Diff line change 1
1
mod bitwise_and_of_numbers_range;
2
+ mod missing_number;
2
3
mod number_of_1_bits;
3
4
mod power_of_two;
4
5
mod reverse_bits;
Original file line number Diff line number Diff line change
1
+ // Time: O(n)
2
+ // Space: O(1)
3
+ pub struct Solution1 { }
4
+ impl Solution1 {
5
+ pub fn missing_number ( nums : Vec < i32 > ) -> i32 {
6
+ let mut num: i32 = 0 ;
7
+ for i in 0 ..nums. len ( ) {
8
+ num ^= nums[ i] ^ ( i + 1 ) as i32 ;
9
+ }
10
+ num
11
+ }
12
+ }
13
+
14
+ // Time: O(n)
15
+ // Space: O(n)
16
+ // pub struct Solution2 {}
17
+ // impl Solution2 {
18
+ // pub fn missing_number(nums: Vec) -> i32 {
19
+ // 0
20
+ // }
21
+ // }
22
+
23
+ // Time: O(n)
24
+ // Space: O(1)
25
+ pub struct Solution3 { }
26
+ impl Solution3 {
27
+ pub fn missing_number ( nums : Vec < i32 > ) -> i32 {
28
+ let len_xor = ( 0 ..nums. len ( ) + 1 ) . fold ( 0 , |acc, i| acc ^ i as i32 ) ;
29
+ nums. iter ( ) . fold ( len_xor, |acc, & i| acc ^ i)
30
+ }
31
+ }
32
+
33
+ // Time: O(n)
34
+ // Space: O(1)
35
+ pub struct Solution4 { }
36
+ impl Solution4 {
37
+ pub fn missing_number ( nums : Vec < i32 > ) -> i32 {
38
+ ( ( 0 ..nums. len ( ) + 1 ) . fold ( 0 , |acc, i| acc + ( i as i32 ) ) ) - nums. iter ( ) . sum :: < i32 > ( )
39
+ }
40
+ }
41
+
42
+ #[ cfg( test) ]
43
+ mod tests {
44
+ use super :: * ;
45
+
46
+ #[ test]
47
+ fn test_missing_number ( ) {
48
+ assert_eq ! ( Solution1 :: missing_number( vec![ 3 , 0 , 1 ] ) , 2 ) ;
49
+ assert_eq ! (
50
+ Solution1 :: missing_number( vec![ 9 , 6 , 4 , 2 , 3 , 5 , 7 , 0 , 1 ] ) ,
51
+ 8
52
+ ) ;
53
+
54
+ // assert_eq!(Solution2::missing_number(vec![3, 0, 1]), 2);
55
+ // assert_eq!(
56
+ // Solution2::missing_number(vec![9, 6, 4, 2, 3, 5, 7, 0, 1]),
57
+ // 8
58
+ // );
59
+
60
+ assert_eq ! ( Solution3 :: missing_number( vec![ 3 , 0 , 1 ] ) , 2 ) ;
61
+ assert_eq ! (
62
+ Solution3 :: missing_number( vec![ 9 , 6 , 4 , 2 , 3 , 5 , 7 , 0 , 1 ] ) ,
63
+ 8
64
+ ) ;
65
+
66
+ assert_eq ! ( Solution4 :: missing_number( vec![ 3 , 0 , 1 ] ) , 2 ) ;
67
+ assert_eq ! (
68
+ Solution4 :: missing_number( vec![ 9 , 6 , 4 , 2 , 3 , 5 , 7 , 0 , 1 ] ) ,
69
+ 8
70
+ ) ;
71
+ }
72
+ }
You can’t perform that action at this time.
0 commit comments