Unique Paths II

来源:互联网 发布:网络连接正常上不了网 编辑:程序博客网 时间:2024/05/18 11:19

承接上一题,注意的是,初始化的时候,若一个为1,其后的格子都为1.

public class Solution {    public int uniquePathsWithObstacles(int[][] obstacleGrid) {        int m = obstacleGrid.length, n = obstacleGrid[0].length;if(m<1||n<1){return 0;}        int [][] dp = new int[m][n];boolean flag = false;for (int i = 0; i < m; i++) {if (obstacleGrid[i][0] == 1) {flag = true;}if (flag)dp[i][0] = 0;elsedp[i][0] = 1;}flag = false;for (int i = 0; i < n; i++) {if (obstacleGrid[0][i] == 1) {flag = true;}if (flag)dp[0][i] = 0;elsedp[0][i] = 1;}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = dp[i-1][j] + dp[i][j-1];if (obstacleGrid[i][j] == 1) {dp[i][j] = 0;}}}return dp[m-1][n-1];    }}

Follow up for "Unique Paths":

Now consider if some obstacles are added to the grids. How many unique paths would there be?

An obstacle and empty space is marked as 1 and 0 respectively in the grid.

For example,

There is one obstacle in the middle of a 3x3 grid as illustrated below.

[  [0,0,0],  [0,1,0],  [0,0,0]]

The total number of unique paths is 2.

Note: m and n will be at most 100.


0 0
原创粉丝点击