zoukankan      html  css  js  c++  java
  • LeetCode-062-不同路径

    不同路径

    题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

    机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

    问总共有多少条不同的路径?

    示例说明请见LeetCode官网。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/unique-paths/
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解法一:递归法

    首先,经过分析可知,到达任意一个单元格子的最后一步,可以从这个格子的左边过来,也可以从这个格子的上边过来,所以到达任意一个格子的步数是到它左边的步数加上到它上面格子的步数之和,所以可以用递归的方法求解,具体过程如下:

    • 如果m等于1或者n等于1,直接返回1;
    • 如果上面的条件不满足,则递归调用该方法求解uniquePaths(m - 1, n) + uniquePaths(m, n - 1)
    解法二:迭代法

    首先记录第一行的格子的数字都是1,然后由于第一列的值都是1,而下面的每一行的1 ~ n-1列的值都可以根据当前行的左边的格子和上一行的上面的格子的值相加所得,所以通过迭代得到每一行的值,最后返回最后一行的最后一个值即为最终结果。

    public class LeetCode_062 {
        /**
         * 递归
         *
         * @param m
         * @param n
         * @return
         */
        public static int uniquePaths(int m, int n) {
            if (m == 1 || n == 1) {
                return 1;
            }
            return uniquePaths(m - 1, n) + uniquePaths(m, n - 1);
        }
    
        /**
         * 迭代
         *
         * @param m
         * @param n
         * @return
         */
        public static int uniquePaths1(int m, int n) {
            if (m == 1 || n == 1) {
                return 1;
            }
            int[] row = new int[n];
            for (int i = 0; i < n; i++) {
                row[i] = 1;
            }
            for (int i = 2; i <= m; i++) {
                for (int x = 1; x < row.length; x++) {
                    row[x] = row[x - 1] + row[x];
                }
            }
            return row[n - 1];
        }
    
        public static void main(String[] args) {
            System.out.println(uniquePaths(51, 9));
            System.out.println(uniquePaths1(51, 9));
        }
    }
    

    【每日寄语】 给自己信心,没有人可以帮你,不钻牛角尖,自然就海阔天空!

  • 相关阅读:
    C语言输出颜色
    嵌入式Linux串口编程简介
    推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
    嵌入式串口打印信息重定向到当前终端界面
    C、C++、boost、Qt在嵌入式系统开发中的使用
    LInux下Posix的传统线程示例
    Linux用C语言模拟‘ls‘命令
    关于Linux目录访问函数总结
    Inter内部指令--AVX编程基础
    SPECCPU2006测试(456测试小记)
  • 原文地址:https://www.cnblogs.com/kaesar/p/15150711.html
Copyright © 2011-2022 走看看