This repository has been archived by the owner on Dec 20, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrotate-array.rs
65 lines (53 loc) · 1.55 KB
/
rotate-array.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
struct Solution;
impl Solution {
fn impl1(nums: &mut Vec<i32>, k: i32) {
for _ in 0..k {
let p = nums.pop().unwrap();
nums.insert(0, p);
}
}
#[allow(unused)]
fn impl2(nums: &mut [i32], k: i32) {
let i = nums.len() as i32;
nums.rotate_right(k.rem_euclid(i) as usize);
}
pub fn rotate(nums: &mut Vec<i32>, k: i32) {
Solution::impl1(nums, k)
}
}
fn main() {
let mut nums = vec![1, 2, 3, 4, 5, 6, 7];
Solution::rotate(&mut nums, 3);
println!("{:?}", nums);
let mut nums = vec![-1, -100, 3, 99];
Solution::rotate(&mut nums, 2);
println!("{:?}", nums);
}
#[cfg(test)]
mod tests {
use crate::Solution;
#[test]
fn test_impl1() {
let mut nums = vec![1, 2, 3, 4, 5, 6, 7];
Solution::impl1(&mut nums, 3);
assert_eq!(nums, vec![5, 6, 7, 1, 2, 3, 4]);
let mut nums = vec![-1, -100, 3, 99];
Solution::impl1(&mut nums, 2);
assert_eq!(nums, vec![3, 99, -1, -100]);
let mut nums = vec![1, 2];
Solution::impl1(&mut nums, 3);
assert_eq!(nums, vec![2, 1]);
}
#[test]
fn test_impl2() {
let mut nums = vec![1, 2, 3, 4, 5, 6, 7];
Solution::impl2(&mut nums, 3);
assert_eq!(nums, vec![5, 6, 7, 1, 2, 3, 4]);
let mut nums = vec![-1, -100, 3, 99];
Solution::impl2(&mut nums, 2);
assert_eq!(nums, vec![3, 99, -1, -100]);
let mut nums = vec![1, 2];
Solution::impl2(&mut nums, 3);
assert_eq!(nums, vec![2, 1]);
}
}