#2061
Medium Algorithms Number of spaces cleaning robot cleaned
Array Matrix Simulation
62.6% acceptance
Mar 31, 2026
130
29
No description available.
Solution
Rust
Time O(n * m)
Space O(n * m)
impl Solution {
pub fn number_of_clean_rooms(room: Vec<Vec<i32>>) -> i32 {
let m = room.len();
let n = room[0].len();
// directions: right, down, left, up
let dr = [0i32, 1, 0, -1];
let dc = [1i32, 0, -1, 0];
let mut visited = vec![vec![[false; 4]; n]; m];
let mut cleaned = vec![vec![false; n]; m];
let mut r = 0usize;
let mut c = 0usize;
let mut d = 0usize;
let mut count = 0;
loop {
if visited[r][c][d] {
return count;
}
visited[r][c][d] = true;
if !cleaned[r][c] {
cleaned[r][c] = true;
count += 1;
}
let nr = r as i32 + dr[d];
let nc = c as i32 + dc[d];
if nr >= 0 && nr < m as i32 && nc >= 0 && nc < n as i32 && room[nr as usize][nc as usize] == 0 {
r = nr as usize;
c = nc as usize;
} else {
d = (d + 1) % 4;
}
}
}
}