package dynamic;/**题目:路径数量,含障碍物* 题目给定一个m*n的二维数组,数组值有0和1,要求从左上角走到右下脚的路径和,* 只能向右和向下走,并且数组值只有为0时候该路径才允许走* @Author Gavin* @date 2022年01月09日 16:35*/public class solution_7 {/*** 解题思路:动态规划题* 首先得到状态方程,我们可以得出如下的结论* 第0行到第0列上面所有的值都是0的话那么这行上面的所有路径都是1,如果中间i为1的话,* 那么从i到末尾的路径都是0* 同理第i行到第0列*///Time:O(m*n) Space:O(m*n)public int solution(int[][] grid){int m=grid.length,n=grid[0].length;int[][] d=new int[m][n];d[0][0]=grid[0][0]==1?0:1;for (int i = 1; i <m ; i++) {d[i][0]=grid[i][0]==1?0:d[i-1][0];}for (int j = 0; j < n; j++) {d[0][j]=grid[0][j]==1?0:d[0][j-1];}for (int i = 1; i <m ; i++) {for (int j = i; j < n; j++) {d[i][j]=grid[i][j]==1?0:d[i-1][j]+d[i][j-1];}}return d[m-1][n-1];}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。