LeetCode算法问题11 —— Maximum Length of Repeated Subarray
2017-11-05 16:51
441 查看
先看问题描述
![](https://img-blog.csdn.net/20171105163731366?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvV1NRUG9pc29u/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
给定两个整数型数组,要求找出相等的最长子串的长度。特别的,将数组长度限制在了1-1000,且数组元素限制在了0-100
本体采用了动态规划的算法,从最短相同子串慢慢累积到最长相同子串,每一个更长子串都是基于上一次较短子串获得的。
这里定义一个数组C[i][j]记录以给定数组A[i]和B[j]结尾的相同子串长度,也就是说,如果A[i] 和B[j]不相同,则相同子串在此处已经完结,如果相同,则它是在上一个状态的基础上加一,即C[i - 1][j - 1] + 1。
因此可得计算式
C[i][j]=(A[i]==B[j]?C[i−1][j−1]+1:0);
每次获得新的C[i][j],与当前遇到最大值比较,最后返回最大值即可。
代码如下:
牵扯两层循环,复杂度为O(len(A)len(B))
给定两个整数型数组,要求找出相等的最长子串的长度。特别的,将数组长度限制在了1-1000,且数组元素限制在了0-100
本体采用了动态规划的算法,从最短相同子串慢慢累积到最长相同子串,每一个更长子串都是基于上一次较短子串获得的。
这里定义一个数组C[i][j]记录以给定数组A[i]和B[j]结尾的相同子串长度,也就是说,如果A[i] 和B[j]不相同,则相同子串在此处已经完结,如果相同,则它是在上一个状态的基础上加一,即C[i - 1][j - 1] + 1。
因此可得计算式
C[i][j]=(A[i]==B[j]?C[i−1][j−1]+1:0);
每次获得新的C[i][j],与当前遇到最大值比较,最后返回最大值即可。
代码如下:
int findLength(vector<int>& A, vector<int>& B) { vector<vector<int> > C(A.size() + 1, vector<int>(B.size() + 1, 0)); int result = 0; for (int i = 1; i < A.size() + 1; ++i) { for (int j = 1; j < B.size() + 1; ++j) { if (A[i - 1] == B[j - 1]) { C[i][j] = C[i - 1][j - 1] + 1; } result = result > C[i][j] ? result : C[i][j]; } } return result; }
牵扯两层循环,复杂度为O(len(A)len(B))
相关文章推荐
- Leetcode算法学习日志-718 Maximum Length of Repeated Subarray
- Maximum Length of Repeated Subarray问题及解法
- LeetCode.718 Maximum Length of Repeated Subarray(经典DP问题)
- LeetCode-718:Maximum Length of Repeated Subarray (最长公共子数组) -- medium
- leetcode010-Maximum Length of Repeated Subarray(LCS动态规划)
- [LeetCode] Maximum Length of Repeated Subarray 最长的重复子数组
- Maximum Length of Repeated Subarray
- 718 Maximum Length of Repeated Subarray
- Maximum Length of Repeated Subarray
- LeetCode:Maximum Length of Repeated Subarray
- leetcode: Maximum Length of Repeated Subarray
- Maximum Length of Repeated Subarray
- HashTable-718-Maximum Length of Repeated Subarray
- Array-Maximum Length of Repeated Subarray
- leetcode练习 Maximum Length of Repeated Subarray
- Leetcode | Maximum Length of Repeated Subarray
- Maximum Length of Repeated Subarray解题报告
- LeetCode#718 Maximum Length of Repeated Subarray (week9)
- LeetCode 718 Maximum Length of Repeated Subarray
- Leetcode 718 Maximum Length of Repeated Subarray