Longest Increasing Continuous Subsequence II
Question
Give you an integer matrix (with row size n, column size m),find the longest increasing continuous subsequence in this matrix. (The definition of the longest increasing continuous subsequence here can start at any row or column and go up/down/right/left any direction).
Example
Given a matrix:
return 25
Challenge
O(nm) time and memory.
Tags
Dynamic Programming
Related Problems
Easy Longest Increasing Continuous Subsequence
Analysis
可以借鉴在I问题中的思路,来构建2D的状态转移方程。
在2D中搜索increasing continuous subsequence, 可以考虑双重循环加递归搜索,直接求以(x, y)
为结尾的最长子序列。
利用记忆化搜索可以进行优化。
什么时候用记忆化搜索? 1. 状态转移特别麻烦,不是顺序性。 2. 初始化状态不是很容易找到。
动态规划求解四要素:
状态
dp[x][y]
: 以x, y
作为结尾的最长子序列
方程
遍历
x, y
上下左右四个方向的格子dp[x][y] = dp[nx][ny] + 1
ifA[x][y] > A[nx][ny]
初始化
dp[x][y]
是极小值时,初始化为1
答案
d[x][y]
中的最大值
Solution
Reference
Last updated