首页 > 其他分享 >LeetCode 300. 最长递增子序列

LeetCode 300. 最长递增子序列

时间:2024-06-12 10:57:42浏览次数:24  
标签:nums 300 max 递增 int 序列 LeetCode dp

更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。
组队打卡,更多解法等你一起来参与哦!

LeetCode 300. 最长递增子序列,难度中等

动态规划

解题思路:遍历数组,对于每个 nums[i],检查其之前的所有元素 nums[j] 0 ≤ j < i 0 \leq j < i 0≤j<i​​ 。如果 nums[i] > nums[j],则 nums[i] 可以接在 nums[j] 后面形成一个更长的递增子序列。因此更新 dp[i]dp[i] = Math.max(dp[i], dp[j] + 1)

import java.util.Arrays;

class Solution {
    public int lengthOfLIS(int[] nums) {
        // 如果数组为空,返回0
        if (nums.length == 0) return 0;

        // 初始化dp数组,所有元素初始化为1
        int[] dp = new int[nums.length];
        Arrays.fill(dp, 1);

        // 初始化max,记录最长的递增子序列的长度
        int max = 1;

        // 遍历数组
        for (int i = 1; i < nums.length; ++i) {
            // 对于每个nums[i],检查其之前的所有元素nums[j]
            for (int j = 0; j < i; ++j) {
                // 如果nums[i]大于nums[j]
                if (nums[i] > nums[j]) {
                    // 更新dp[i]的值
                    dp[i] = Math.max(dp[i], dp[j] + 1);
                }
            }
            // 更新最长递增子序列的长度
            max = Math.max(max, dp[i]);
        }

        // 返回最长递增子序列的长度
        return max;
    }
}

标签:nums,300,max,递增,int,序列,LeetCode,dp
From: https://blog.csdn.net/m0_64381458/article/details/139563116

相关文章

  • LeetCode刷题之HOT100之单词搜索
    2024/6/12这两天天气只能用闷、潮、热来描述。整个人像被罩在为了饭菜保温的盖子里,喘气困难、粘稠的空气一次又一次打湿我。唯有空调救我,夏天来了。Anyway,昨天只做了一题,今天早点来做一题。1、题目描述2、逻辑分析给定一个二维字符矩阵和一个单词,求单词是否在这个二维......
  • 代码随想录 算法训练营 d6 哈希表 Leetcode242 有效的字母异位词 Leetcode349 两个数
    哈希表很重要哈希表哈希表场景一般哈希表都是用来快速判断一个元素是否出现集合里一般来说数组模拟哈希set 哈希map不同的场景 当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,se......
  • leetcode刷题-归纳总结
    框架思维124.求⼆叉树中最⼤路径和后序遍历最大路径转换为为求单边最大路径105.根据前序和中序遍历构造二叉树前序遍历,找到根节点构建root,得到左右子树区间,左右子树递归构建注意:1.终止条件2.构建unordered_map230.寻找⼆叉搜索树中的第k⼩的元素⼆叉搜索树即左支树所有......
  • LeetCode 419. 甲板上的战舰(深度优先搜索dfs、数组)
    419.甲板上的战舰思路:方法一,深度优先搜索dfs,遇到‘X’,就dfs一次,并在board中将其变为‘.’。classSolution{public:voiddfs(intx,inty,vector<vector<char>>&board){if(board[x][y]!='X')return;board[x][y]='.';if(x+1......
  • Leetcode419 甲板上的战舰
    最近以来,我在力扣上坚持完成每天一题,今天系统推的题目为《甲板上的战舰》,在此记录一下。题目描述如下:给你一个大小为mxn的矩阵board表示甲板,其中,每个单元格可以是一艘战舰'X'或者是一个空位'.',返回在甲板board上放置的战舰的数量。战舰只能水平或者垂直放置在......
  • LeetCode 409 Longest Palindrome All In One
    LeetCode409LongestPalindromeAllInOneLeetCode409最长回文算法题解Solutions//MapfunctionlongestPalindrome(s:string):number{constmap=newMap();letlen=0;for(leti=0;i<s.length;i++){if(map.has(s[i])){//配对,消元......
  • LeetCode 算法:缺失的第一个正数c++
    原题链接......
  • Q25 LeetCode49 字母异位词分组
    难好好看看  1classSolution{2publicList<List<String>>groupAnagrams(String[]strs){3if(strs==null||strs.length==0)4returnnewArrayList<>();5//map中key存储的是字符串中字母排序后新的字符串6Map<Stri......
  • 第一篇 LeetCode(42)接雨水
    LeetCode(42)接雨水力扣官网题目描述:给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下,可以接6个单位的雨水......
  • LeetCode 974 Subarray Sums Divisible by K All In One
    LeetCode974SubarraySumsDivisiblebyKAllInOneLeetCode974能被K整除的子数组之和errosfunctionsubarraysDivByK(nums:number[],k:number):number{//-5/0/5letcount:number=0;//单个元素for(leti=0;i<nums.length;i++){......