前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021-09-29:不同路径。一个机器人位于一个 m x n 网格的

2021-09-29:不同路径。一个机器人位于一个 m x n 网格的

原创
作者头像
福大大架构师每日一题
修改2021-09-30 10:20:38
6990
修改2021-09-30 10:20:38
举报

2021-09-29:不同路径。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?。力扣62。

福大大 答案2021-09-29:

排列组合问题。c(m+n-2,m-1)或者c(m+n-2,n-1)。

时间复杂度:O(min(m,n))。

额外空间复杂度:O(1)。

代码用golang编写。代码如下:

代码语言:txt
复制
package main

import "fmt"

func main() {
    ret := uniquePaths(2, 2)
    fmt.Println(ret)
}

// m 行
// n 列
// 下:m-1
// 右:n-1
func uniquePaths(m int, n int) int {
    right := n - 1
    all := m + n - 2
    o1 := 1
    o2 := 1
    // o1乘进去的个数 一定等于 o2乘进去的个数
    for i, j := right+1, 1; i <= all; i, j = i+1, j+1 {
        o1 *= i
        o2 *= j
        gcd := gcd2(o1, o2)
        o1 /= gcd
        o2 /= gcd
    }
    return o1
}

// 调用的时候,请保证初次调用时,m和n都不为0
func gcd2(m int, n int) int {
    if n == 0 {
        return m
    } else {
        return gcd2(n, m%n)
    }
}

执行结果如下:

图片
图片

左神java代码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档