Skip to content

Commit cb573ac

Browse files
author
eamondang
committed
duplicate zeros
1 parent e258779 commit cb573ac

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

src/fun_with_arrays/duplicate_zero.rs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#![allow(dead_code)]
2+
struct Solution;
3+
4+
impl Solution {
5+
pub fn duplicate_zeros(arr: &mut Vec<i32>) {
6+
let mut vec: Vec<usize> = Vec::new();
7+
for (i, &item) in arr.iter().enumerate() {
8+
if item == 0 {
9+
vec.push(i);
10+
}
11+
}
12+
13+
vec.reverse();
14+
for &i in vec.iter() {
15+
arr.insert(i, 0);
16+
arr.pop();
17+
}
18+
}
19+
}
20+
21+
#[cfg(test)]
22+
mod tests {
23+
use super::*;
24+
25+
#[test]
26+
fn test_duplicate_zeros() {
27+
// Test case 1: basic example
28+
let mut arr1 = vec![1, 0, 2, 3, 0, 4, 5, 0];
29+
Solution::duplicate_zeros(&mut arr1);
30+
assert_eq!(arr1, vec![1, 0, 0, 2, 3, 0, 0, 4]);
31+
32+
// Test case 2: no zeros
33+
let mut arr2 = vec![1, 2, 3, 4, 5];
34+
Solution::duplicate_zeros(&mut arr2);
35+
assert_eq!(arr2, vec![1, 2, 3, 4, 5]);
36+
37+
// Test case 3: all zeros
38+
let mut arr3 = vec![0, 0, 0, 0, 0];
39+
Solution::duplicate_zeros(&mut arr3);
40+
assert_eq!(arr3, vec![0, 0, 0, 0, 0]);
41+
42+
// Test case 4: zeros at beginning
43+
let mut arr4 = vec![0, 1, 2, 3];
44+
Solution::duplicate_zeros(&mut arr4);
45+
assert_eq!(arr4, vec![0, 0, 1, 2]);
46+
47+
// Test case 5: zeros at end
48+
let mut arr5 = vec![1, 2, 3, 0];
49+
Solution::duplicate_zeros(&mut arr5);
50+
assert_eq!(arr5, vec![1, 2, 3, 0]);
51+
52+
// Test case 6: single zero
53+
let mut arr6 = vec![1, 0];
54+
Solution::duplicate_zeros(&mut arr6);
55+
assert_eq!(arr6, vec![1, 0]);
56+
57+
// Test case 7: empty vector
58+
let mut arr7 = Vec::new();
59+
Solution::duplicate_zeros(&mut arr7);
60+
assert_eq!(arr7, Vec::new());
61+
}
62+
}

src/fun_with_arrays/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
mod find_numbers_with_even_number_of_digits;
22
mod max_consecutive_ones;
33
mod squares_of_a_sorted_array;
4+
mod duplicate_zero;

0 commit comments

Comments
 (0)