Skip to content

Commit afb31bb

Browse files
committed
q283
1 parent 4bde556 commit afb31bb

File tree

2 files changed

+55
-1
lines changed

2 files changed

+55
-1
lines changed

double-pointer/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
mod q977;
1+
mod q977;
2+
mod q283;

double-pointer/src/q283.rs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
struct Solution ();
2+
impl Solution {
3+
pub fn move_zeroes(nums: &mut Vec<i32>) {
4+
5+
let n = nums.len();
6+
7+
if n == 1{
8+
return;
9+
}
10+
11+
let mut l = 0;
12+
let mut r = 0;
13+
14+
while r <= n - 1{
15+
16+
if nums[l] == 0 {
17+
while r < n-1 && nums[r] == 0 {
18+
r += 1
19+
}
20+
nums[l] = nums[r];
21+
nums[r] = 0;
22+
23+
}
24+
l += 1;
25+
r += 1;
26+
}
27+
28+
}
29+
}
30+
31+
32+
#[cfg(test)]
33+
mod tests {
34+
use super::*;
35+
36+
#[test] fn test_1() {
37+
let mut nums = vec![0,1,0,3,12];
38+
Solution::move_zeroes(&mut nums);
39+
assert_eq!(nums, vec![1,3,12,0,0]);
40+
41+
42+
let mut nums = vec![0, 2];
43+
Solution::move_zeroes(&mut nums);
44+
assert_eq!(nums, vec![2, 0]);
45+
46+
47+
let mut nums = vec![0, 0];
48+
Solution::move_zeroes(&mut nums);
49+
assert_eq!(nums, vec![0, 0]);
50+
}
51+
52+
53+
}

0 commit comments

Comments
 (0)