LeetCode #329: Longest Increasing Path in a Matrix
来源:互联网 发布:网络结构拓扑图 编辑:程序博客网 时间:2024/05/16 08:07
Problem Statement
(Source) Given an integer matrix, find the length of the longest increasing path.
From each cell, you can either move to four directions: left, right, up or down. You may NOT move diagonally or move outside of the boundary (i.e. wrap-around is not allowed).
Example 1:
nums = [ [9,9,4], [6,6,8], [2,1,1]]
Return 4
The longest increasing path is [1, 2, 6, 9].
Example 2:
nums = [ [3,4,5], [3,2,6], [2,2,1]]
Return 4
The longest increasing path is [3, 4, 5, 6]. Moving diagonally is not allowed.
Analysis
This is an Dynamic Programming and Depth-first Search
problem. The idea is to reconstruct the matrix first. Then use an dp
“array” length: @type list
to compute and save solution of sub-problems, to achieve the global optimal solution at last.
Solution
Bottom-up DP:
class Solution(object): def longestIncreasingPath(self, matrix): """ :type matrix: List[List[int]] :rtype: int """ mat = {i + j * 1j : v for i, row in enumerate(matrix) for j, v in enumerate(row)} length = {} for z in sorted(mat, key=mat.get): length[z] = 1 + max([length[Z] for Z in z + 1, z - 1, z + 1j, z - 1j if Z in mat and mat[z] > mat[Z]] or [0]) return max(length.values() or [0])
0 0
- leetcode Longest Increasing Path in a Matrix
- [LeetCode] Longest Increasing Path in a Matrix
- leetcode: Longest Increasing Path in a Matrix
- Leetcode: Longest Increasing Path in a Matrix
- leetcode:Longest Increasing Path in a Matrix
- [LeetCode]Longest Increasing Path in a Matrix
- [Leetcode]Longest Increasing Path in a Matrix
- Longest Increasing Path in a Matrix | leetcode
- LeetCode Longest Increasing Path in a Matrix
- 【Leetcode】Longest Increasing Path in a Matrix
- LeetCode:Longest Increasing Path in a Matrix
- [leetcode]Longest Increasing Path in a Matrix
- Leetcode Longest Increasing Path in a Matrix
- [LeetCode]Longest Increasing Path in a Matrix
- 【LEETCODE】329-Longest Increasing Path in a Matrix [Python]
- [LeetCode 329] Longest Increasing Path in a Matrix
- leetcode 329 : Longest Increasing Path in a Matrix : dfs+dp
- [leetcode-329]Longest Increasing Path in a Matrix(java)
- HTML5中 HTML列表/块/布局 韩俊强的博客
- 防止SQL注入方法总览(整理)
- springMVC的工作流程
- 377. Combination Sum IV
- 宽度可变圆角矩形
- LeetCode #329: Longest Increasing Path in a Matrix
- 设计模式 - 组合模式
- Camera--V4L2驱动学习记录
- Codeforces Round #369 (div.2) 即 Codeforces 711
- HDU 4403 A very hard Aoshu problem【DFS】
- Android编译过程详解(三)
- Quick reference for manual unpacking
- Python正则表达式指南
- Xvid视频编解码算法