Skip to content

Commit 9d990cc

Browse files
committed
Runtime: 6 ms (Top 100.0%) | Memory: 2.28 MB (Top 100.0%)
1 parent d7d3351 commit 9d990cc

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
// Runtime: 6 ms (Top 100.0%) | Memory: 2.28 MB (Top 100.0%)
2+
3+
impl Solution {
4+
5+
pub fn rotate_grid(grid: Vec<Vec<i32>>, k: i32) -> Vec<Vec<i32>> {
6+
7+
let n = grid.len();
8+
9+
let m = grid[0].len();
10+
11+
12+
13+
let min = n.min(m) / 2;
14+
15+
let k = k as usize;
16+
17+
18+
19+
let mut result = grid.clone();
20+
21+
for pi in 0..min {
22+
23+
let mut temps = vec![];
24+
25+
26+
27+
let x = pi;
28+
29+
for y in pi..n-pi {
30+
31+
temps.push((y,x));
32+
33+
}
34+
35+
36+
37+
let y = n-1-pi;
38+
39+
for x in pi+1..m-pi {
40+
41+
temps.push((y,x));
42+
43+
}
44+
45+
46+
47+
let x = m-1-pi;
48+
49+
for y in (pi..n-1-pi).rev() {
50+
51+
temps.push((y,x));
52+
53+
}
54+
55+
56+
57+
let y = pi;
58+
59+
for x in (pi+1..m-1-pi).rev() {
60+
61+
temps.push((y,x));
62+
63+
}
64+
65+
66+
67+
let len = temps.len();
68+
69+
let ak = k % len;
70+
71+
for i in 0..len {
72+
73+
let (ci,cj) = temps[i];
74+
75+
let (ti,tj) = temps[(i+ak) % len];
76+
77+
result[ti][tj] = grid[ci][cj];
78+
79+
}
80+
81+
}
82+
83+
84+
85+
result
86+
87+
}
88+
89+
}

0 commit comments

Comments
 (0)