子序列问题也是个经典问题,之前比较熟,先开这个专题;
class Solution {
public:int lengthOfLIS(vector& nums) {int len=nums.size();vector f(len,1);for(int i=0;i
与上题不同点在于连续,i只能从i-1迭代过来;
class Solution {
public:int findLengthOfLCIS(vector& nums) {int n=nums.size();vector f(n,1);for(int i=1;inums[i-1]) f[i]=f[i-1]+1;}int ans=0;for(int i=0;i
首先,子数组是连续的!子序列是不连续的;
最长公共子数组,转移只有一个情况;
class Solution {
public:int findLength(vector& nums1, vector& nums2) {int n1=nums1.size(),n2=nums2.size();vector> f(n1+1,vector(n2+1,0));for(int i=1;i<=n1;i++){for(int j=1;j<=n2;j++){if(nums1[i-1]==nums2[j-1]) f[i][j]=max(f[i][j],f[i-1][j-1]+1);}}int ans=0;for(int i=1;i<=n1;i++){for(int j=1;j<=n2;j++){ans=max(ans,f[i][j]);}}return ans;}
};