zoukankan      html  css  js  c++  java
  • 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
        }
    }
  • 相关阅读:
    Python常见的几种算法
    Python的八种数据类型
    网络协议
    Python基本知识
    Python简介
    Windows10 java环境配置
    linux 为动态分配的Virtualbox虚拟硬盘扩容
    ubuntu 18.04.1安装hadoop3.1.2
    linux 安装virtualbox5.2
    这是写给我自己看的!!
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13616668.html
Copyright © 2011-2022 走看看