代码随想录Day52 | 300. 最长递增子序列 | 674. 最长连续递增序列 | 718. 最长重复子数组

300. 最长递增子序列

        

class Solution {
public:
    int lengthOfLIS(vector& nums) {
        if (nums.size() <= 1) return nums.size();
        vector f(nums.size(), 1);
        int result = 0;
        for (int i = 1; i < nums.size(); i++) {
            for (int j = 0; j < i; j++) {
                if (nums[i] > nums[j]) f[i] = max(f[i], f[j] + 1);
            }
            result = max(f[i],result);
        }
        return result;
    }
};

674. 最长连续递增序列

        

class Solution {
public:
    int findLengthOfLCIS(vector& nums) {
        vector f(nums.size()+1,1);
        int res=1;
        for(int i=1;inums[i-1])
            f[i]=f[i-1]+1;
            res=max(res,f[i]);
        }
        return res;
    }
};

718. 最长重复子数组

        

class Solution {
public:
    int findLength(vector& nums1, vector& nums2) {
        vector> f (nums1.size() + 1, vector(nums2.size() + 1, 0));
        int res = 0;
        for (int i = 1; i <= nums1.size(); i++) {
            for (int j = 1; j <= nums2.size(); j++) {
                if (nums1[i - 1] == nums2[j - 1]) {
                    f[i][j] = f[i - 1][j - 1] + 1;
                }
                res = max(f[i][j],res);
            }
        }
        return res;
    }
};

你可能感兴趣的:(算法题练习,算法,leetcode,数据结构)