Skip to content

Commit 4552a24

Browse files
committed
Create 1652-defuse-the-bomb.rs
1 parent 68ac405 commit 4552a24

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

1652-defuse-the-bomb.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
pub fn decrypt(code: Vec<i32>, k: i32) -> Vec<i32> {
2+
if k == 0 { return vec![0; code.len()] }
3+
let mut ret = vec![];
4+
for i in 0..code.len() {
5+
if k > 0 {
6+
let tail = i + k as usize;
7+
if tail <= code.len() - 1 {
8+
ret.push(code[i+1..=tail].into_iter().sum::<i32>());
9+
} else {
10+
let tmp: i32 = &code[i+1..].into_iter().sum::<i32>() +
11+
&code[0..tail-code.len()+1].into_iter().sum::<i32>();
12+
ret.push(tmp);
13+
}
14+
} else {
15+
let head = i as i32 + k; // i =1 k = -2
16+
if head >= 0 {
17+
ret.push(code[head as usize..i].into_iter().sum::<i32>());
18+
} else {
19+
let tmp: i32 = &code[0..i].into_iter().sum::<i32>() +
20+
&code[(head + code.len() as i32) as usize..].into_iter().sum::<i32>();
21+
ret.push(tmp);
22+
}
23+
}
24+
}
25+
ret
26+
}
27+
28+
fn main() {
29+
println!("{:?}", decrypt(vec![5, 7, 1, 4], 3));
30+
println!("{:?}", decrypt(vec![2, 4, 9, 3], -2));
31+
}

0 commit comments

Comments
 (0)