牛客Top200---求路径(java图解)

Posted 小样5411

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客Top200---求路径(java图解)相关的知识,希望对你有一定的参考价值。

题目

一个机器人在m×n大小的地图的左上角(起点)。机器人每次向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点?

解析

下面这张图就是最直观的解法,第一行与第一列都只有一种走法,其它位置走法只要将左边和上边相加即可

如第二行第三列有3种走法,三种颜色标注出来了,也就是上面有1种,左边有两种

代码

理解逻辑后,代码就很好写了

import java.util.*;

public class Solution {
    public int uniquePaths (int m, int n) {
        //初始化数组
        int[][] dp = new int[m][n];
        for(int i = 0 ; i < m ; i++){
            for(int j = 0 ; j < n ; j++){
                //第一行与第一列都只有一种走法
                if(i == 0){
                    dp[0][j] = 1;
                    continue;
                }
                if(j == 0){
                    dp[i][0] = 1;
                    continue;
                }
                //非第一行与第一列情况
                if(i > 0 && j > 0){
                    dp[i][j] = dp[i-1][j] + dp[i][j-1];
                }
            }
        }
        return dp[m-1][n-1];
    }
}

以上是关于牛客Top200---求路径(java图解)的主要内容,如果未能解决你的问题,请参考以下文章

牛客Top200---判断一个链表是否为回文结构(java图解)

牛客Top200---二叉树和为指定值的路径(java)

牛客Top200---括号序列(java详解)

牛客Top200---判断回文(java)

牛客Top200---进制转换(java)

牛客Top200---大数加法(java详解)