zoukankan      html  css  js  c++  java
  • leetcode不同路径

    62.

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

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

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/unique-paths

    思路1:时间换空间;

    将问题转换为数学问题,以(7,3)为例,往右走6次,往下走2次,即有(6+2)!种排列组合,去掉重复组合6!和2!,结果为8! / 6! / 2!。再根据规律

    1*2*3*4*5*6*7*8

    1*2*3*4*5*6

    1*2

    第一个式子可以抵消第二个或第三个式子,而且抵消后,式子1剩下的数刚好和剩下的式子数字数量相等,不必每次都从开始进行计算

    /**
     * @param {number} m
     * @param {number} n
     * @return {number}
     */
    var uniquePaths = function(m, n) {
        let sum=1;
        let j=1;
        let memory=1;
        for(let i=m;i<=m+n-2;i++){
            if(i%j==0){
                sum*=i/j;
            }
            else{
                sum*=i;
                memory*=j;
            }
            j++;
        }
        return sum/memory;
    };

    思路2:空间换时间,没有那么多花里胡哨,直接按公式计算

    /**
     * @param {number} m
     * @param {number} n
     * @return {number}
     */
    var uniquePaths = function(m, n) {
        return mult(m+n-2)/mult(m-1)/mult(n-1);
        function mult(data){
            return data<=1? 1: data*mult(data-1);
        }
    };
  • 相关阅读:
    《DSP using MATLAB》Problem 6.17
    一些老物件
    《DSP using MATLAB》Problem 6.16
    《DSP using MATLAB》Problem 6.15
    《DSP using MATLAB》Problem 6.14
    《DSP using MATLAB》Problem 6.13
    《DSP using MATLAB》Problem 6.12
    《DSP using MATLAB》Problem 6.11
    P1414 又是毕业季II
    Trie树
  • 原文地址:https://www.cnblogs.com/tenfly/p/11758432.html
Copyright © 2011-2022 走看看