LeetCode: Longest Increasing Path In A Matrix Solution
1/**2 * @param {number[][]} matrix3 * @return {number}4 */5var longestIncreasingPath = function (matrix) {6 const [M, N] = [matrix.length, matrix[0].length]7 let memo = Array.from({ length: M }, _ => Array(N).fill(null))89 const outOfBound = (i, j) => i < 0 || i >= M || j < 0 || j >= N1011 const recursion = (i, j, prevCell) => {12 if (outOfBound(i, j) || matrix[i][j] <= prevCell) {13 return 014 }1516 if (memo[i][j] !== null) {17 return memo[i][j]18 }1920 const path =21 1 +22 Math.max(23 recursion(i + 1, j, matrix[i][j]),24 recursion(i - 1, j, matrix[i][j]),25 recursion(i, j + 1, matrix[i][j]),26 recursion(i, j - 1, matrix[i][j])27 )2829 return (memo[i][j] = path)30 }3132 for (let i = 0; i < M; i++) {33 for (let j = 0; j < N; j++) {34 recursion(i, j, -Infinity)35 }36 }3738 return Math.max.apply(null, memo.flat())39}
Comments
Loading comments...
Tags
leetcode
dynamic programming
dfs
topological sort
Apply and earn a $2,500 bonus once you're hired on your first job!
Clients from the Fortune 500 to Silicon Valley startups
Choose your own rate, get paid on time
From hourly, part-time, to full-time positions
Flexible remote working environment
A lot of open JavaScript jobs!!
Fact corner: Referred talent are 5x more likely to pass the Toptal screening process than the average applicant.
Still hesitate? Read HoningJS author's guide on dealing with Toptal interview process.
Next Post
CodeWars: Dont Rely On Luck
Apr 10, 2021
Previous Post
LeetCode: Verifying An Alien Dictionary
Apr 9, 2021