You are given an m x n
grid classroom
where a student volunteer is tasked with cleaning up litter scattered around the room. Each cell in the grid is one of the following:
'S'
: Starting position of the student'L'
: Litter that must be collected (once collected, the cell becomes empty)'R'
: Reset area that restores the student's energy to full capacity, regardless of their current energy level (can be used multiple times)'X'
: Obstacle the student cannot pass through'.'
: Empty spaceYou are also given an integer energy
, representing the student's maximum energy capacity. The student starts with this energy from the starting position 'S'
.
Each move to an adjacent cell (up, down, left, or right) costs 1 unit of energy. If the energy reaches 0, the student can only continue if they are on a reset area 'R'
, which resets the energy to its maximum capacity energy
.
Return the minimum number of moves required to collect all litter items, or -1
if it's impossible.
Example 1:
Input: classroom = ["S.", "XL"], energy = 2
Output: 2
Explanation:
(0, 0)
with 2 units of energy.(1, 0)
contains an obstacle 'X', the student cannot move directly downward.(0, 0)
→ (0, 1)
with 1 unit of energy and 1 unit remaining.(0, 1)
→ (1, 1)
to collect the litter 'L'
.Example 2:
Input: classroom = ["LS", "RL"], energy = 4
Output: 3
Explanation:
(0, 1)
with 4 units of energy.(0, 1)
→ (0, 0)
to collect the first litter 'L'
with 1 unit of energy used and 3 units remaining.(0, 0)
→ (1, 0)
to 'R'
to reset and restore energy back to 4.(1, 0)
→ (1, 1)
to collect the second litter 'L'
.Example 3:
Input: classroom = ["L.S", "RXL"], energy = 3
Output: -1
Explanation:
No valid path collects all 'L'
.
Constraints:
1 <= m == classroom.length <= 20
1 <= n == classroom[i].length <= 20
classroom[i][j]
is one of 'S'
, 'L'
, 'R'
, 'X'
, or '.'
1 <= energy <= 50
'S'
in the grid.'L'
cells in the grid.