代码随想录算法训练营day52 300.递增子序列 674.最长连续递增子序列 718.最长重复子数组

题目链接300.递增子序列

复制代码
class Solution {
    public int lengthOfLIS(int[] nums) {
        int[] dp = new int[nums.length];
        Arrays.fill(dp, 1);
        for(int i = 0; i < nums.length; i++){
            for(int j = 0; j < i; j++){
                if(nums[i] > nums[j]){
                    dp[i] = Math.max(dp[i], dp[j] + 1);
                }
            }
        }
        int res = 0;
        for(int i = 0; i < nums.length; i++){
            res = Math.max(res, dp[i]);
        }
        return res;        
    }
}

题目链接674.最长连续递增子序列

复制代码
class Solution {
    public int findLengthOfLCIS(int[] nums) {
        int[] dp = new int[nums.length];
        Arrays.fill(dp, 1);
        int res = 1;
        for(int i = 1; i < nums.length; i++){
            if(nums[i] > nums[i-1]){
                dp[i] = Math.max(dp[i], dp[i-1] + 1);
            }
            res = Math.max(res, dp[i]);
        }
        return res;
    }
}

题目链接718.最长重复子数组

复制代码
class Solution {
    public int findLength(int[] nums1, int[] nums2) {
        int res = 0;
        int[][] dp = new int[nums1.length+1][nums2.length+1];
        for(int i = 1; i <= nums1.length; i++){
            for(int j = 1; j <=nums2.length; j++){
                if(nums1[i-1] == nums2[j-1]){
                    dp[i][j] = Math.max(dp[i][j], dp[i-1][j-1] + 1);
                }
                res = Math.max(res, dp[i][j]);
            }
        }
        return res;
    }
}
相关推荐
setmoon2144 分钟前
多协议网络库设计
开发语言·c++·算法
Sylvia-girl7 分钟前
删除有序数组中的重复项
数据结构·算法
2501_908329857 分钟前
嵌入式LinuxC++开发
开发语言·c++·算法
Storynone7 分钟前
【Day30】卡码网:46. 携带研究材料,LeetCode:416. 分割等和子集
python·算法·leetcode
少许极端10 分钟前
算法奇妙屋(三十四)-贪心算法学习之路 1
学习·算法·贪心算法
兑生11 分钟前
【灵神题单·贪心】3010. 将数组分成最小总代价的子数组 I | Java
java·开发语言·算法
垫脚摸太阳19 分钟前
二分查找经典算法题--数的范围
数据结构·算法
噜啦噜啦嘞好20 分钟前
算法篇:二分查找
数据结构·c++·算法·leetcode
setmoon21420 分钟前
C++中的构建器模式
开发语言·c++·算法
2301_8154829320 分钟前
C++中的桥接模式变体
开发语言·c++·算法