Longest Increasing Path in a Matrix LeetCode solution in Python
1class Solution:2def longestIncreasingPath(self, matrix: List[List[int]]) -> int:3ROWS, COLS = len(matrix), len(matrix[0])4dp = {}56def dfs(r, c, prevVal):7if r < 0 or r == ROWS or c < 0 or c == COLS or matrix[r][c] <= prevVal:8return 09if (r, c) in dp:10return dp[(r, c)]11res = 112res = max(res, 1 + dfs(r + 1, c, matrix[r][c]))13res = max(res, 1 + dfs(r - 1, c, matrix[r][c]))14res = max(res, 1 + dfs(r, c + 1, matrix[r][c]))15res = max(res, 1 + dfs(r, c - 1, matrix[r][c]))16dp[(r, c)] = res17return res1819for r in range(ROWS):20for c in range(COLS):21dfs(r, c, -1)22return max(dp.values())