62. Unique Paths

复制代码
package LeetCode_62

/**
 * 62. Unique Paths
 * https://leetcode.com/problems/unique-paths/description/
 *
 * A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).
The robot can only move either down or right at any point in time.
The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).
How many possible unique paths are there?
 * */
class Solution {
    /*
    * solution:DP, Top-Down, Time complexity:O(mn), Space complexity:O(mn)
    * current position just care about it's left one and top one
    * */
    fun uniquePaths(m: Int, n: Int): Int {
        val dp = Array(m + 1) { IntArray(n + 1) { 0 } }
        return topDownSolution(m, n, dp)
    }

    private fun topDownSolution(x: Int, y: Int, dp: Array<IntArray>): Int {
        if (x == 0 || y == 0) {
            return 0
        }
        if (x == 1 && y == 1) {
            return 1
        }
        if (dp[x][y] > 0) {
            return dp[x][y]
        }
        var res = 0
        for (i in 0 until x) {
            for (j in 0 until y) {
                val topPath = topDownSolution(x, y - 1, dp)
                val leftPath = topDownSolution(x - 1, y, dp)
                res = topPath + leftPath
            }
        }
        dp[x][y] = res
        return res
    }
}
复制代码

 

posted @   johnny_zhao  阅读(105)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-09-04 Android Studio update issue with jre/bin/java
点击右上角即可分享
微信分享提示