leetcode : Unique Paths II
runtime 0 ms, beats 100% of cpp submissions
O(mn) solution with explanation
tags: dp
🔗 link
📖 description
給定一個 2 維陣列,數值 0 表示可以通過的路,數值 1 表示有障礙物,請求從 (0,0) 至 (m,n) 在繞開障礙物時有多少種到達的可能。
ex. Input: obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]] Output: 2 Explanation: There is one obstacle in the middle of the 3x3 grid above. There are two ways to reach the bottom-right corner: 1. Right -> Right -> Down -> Down 2. Down -> Down -> Right -> Right
🧠 solution
與前一題的方法不同,因為障礙物的存在,沒辦法使用數學的方法計算,於是必須利用 prefix sum 來累加可能性,不計算以及累加障礙物的格子。
⏳ time complexity
計算 2 維前綴和,時間複雜度 O(mn) ,其中 m, n 為陣列的長寬
總時間複雜度 O(mn)
📝 code
1 | class Solution { |