3568. Minimum Moves to Clean the Classroom 解題紀錄V2

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 space You 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: The student starts at cell (0, 0) with 2 units of energy. Since cell (1, 0) contains an obstacle 'X', the student cannot move directly downward. A valid sequence of moves to collect all litter is as follows: Move 1: From (0, 0) → (0, 1) with 1 unit of energy and 1 unit remaining. Move 2: From (0, 1) → (1, 1) to collect the litter 'L'. The student collects all the litter using 2 moves. Thus, the output is 2. Example 2: Input: classroom = ["LS", "RL"], energy = 4 Output: 3 Explanation: The student starts at cell (0, 1) with 4 units of energy. A valid sequence of moves to collect all litter is as follows: Move 1: From (0, 1) → (0, 0) to collect the first litter 'L' with 1 unit of energy used and 3 units remaining. Move 2: From (0, 0) → (1, 0) to 'R' to reset and restore energy back to 4. Move 3: From (1, 0) → (1, 1) to collect the second litter 'L'. The student collects all the litter using 3 moves. Thus, the output is 3. 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 There is exactly one 'S' in the grid. There are at most 10 'L' cells in the grid. 這題給我們一個二維陣列稱作教室 classroom, 還有一個打掃垃圾的能量 energy。 今天有個學生從 S 點出發, 其中 X 點代表障礙物不能通過、R點代表可以回復全部能量的地方、L點代表垃圾點。 在每移動一格就會扣一格能量的情況下, 要求打掃完垃圾的最短路徑。 這題比較需要注意的是會回能量, 代表需要考慮能量路徑,成功條件是蒐集完全部垃圾, 但由於能量那邊我們要做多維 vis陣列, 所以會有重複路徑,也代表垃圾要編碼。 大概是這樣,注意以上幾點就可以寫 BFS 了。 今天程式碼太長就先不放。 假設 classroom 的尺寸為: M*N; Energy 為 E、垃圾的編碼的長度為 Mask。 計算複雜度:O(M*N*E*Mask) 空間複雜度:O(M*N*E*Mask) Github程式碼:
愛心
99
留言
encourage first comment
有些話想說嗎 快分享出來彼此交流吧!