Leetcode 3665. Twisted Mirror Path Count

  • [Leetcode 3665. Twisted Mirror Path Count](#Leetcode 3665. Twisted Mirror Path Count)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题相较于上一题就直接很多了,就是一个动态规划,直接写就行了。

2. 代码实现

给出python代码实现如下:

python 复制代码
MOD = 10**9+7

class Solution:
    def uniquePaths(self, grid: List[List[int]]) -> int:
        n, m = len(grid), len(grid[0])
        
        DIRECTION = {0: (1, 0), 1: (0, 1)}

        @lru_cache(None)
        def dp(i, j, direction):
            if i == n-1 and j == m-1:
                return 1
            if i < 0 or i >= n or j < 0 or j >= m:
                return 0
            if grid[i][j] == 0:
                return (dp(i+1, j, 0) + dp(i, j+1, 1)) % MOD
            while 0 <= i < n and 0 <= j < m and grid[i][j] == 1:
                direction = 1-direction
                dx, dy = DIRECTION[direction]
                i, j = i+dx, j+dy
            return dp(i, j, direction) % MOD

        return dp(0, 0, 0)

提交代码评测得到:耗时耗时2733ms,占用内存306.37MB。

相关推荐
故事和你919 小时前
洛谷-【图论2-1】树5
开发语言·数据结构·c++·算法·动态规划·图论
ʚ希希ɞ ྀ11 小时前
动态规划基础知识---爬楼梯
算法·动态规划
如竟没有火炬17 小时前
至少有K个重复字符的最长子串
开发语言·数据结构·python·算法·leetcode·动态规划
故事和你9120 小时前
洛谷-【图论2-1】树6
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
Mr_pyx21 小时前
LeetCode Hot 100 - 爬楼梯完全题解
算法·动态规划
故事和你912 天前
洛谷-【图论2-1】树4
开发语言·数据结构·c++·算法·动态规划·图论
故事和你912 天前
洛谷-【图论2-1】树1
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
木子墨5162 天前
工程算法实战 | 数据库ORDER BY的底层:内存排序 → 外部归并 → 索引优化
数据结构·数据库·python·sql·算法·动态规划
The Chosen One9852 天前
分享对dp题目的理解-不断更新ing
笔记·算法·深度优先·动态规划·dp
玛卡巴卡ldf2 天前
【LeetCode 手撕算法】(动态规划)爬楼梯、杨辉三角、打家劫舍、完全平方数、零钱兑换、单词拆分、最长递增子序列、乘积最大子数组、分割等和子集
java·数据结构·算法·leetcode·动态规划·力扣