zoukankan      html  css  js  c++  java
  • LeetCode 300 最长上升子序列

    LeetCode 300 最长上升子序列

    问题描述:
    给定一个无序的整数数组,找到其中最长上升子序列的长度。

    动态规划

    执行用时:16 ms, 在所有 Java 提交中击败了24.49%的用户
    内存消耗:36.5 MB, 在所有 Java 提交中击败了95.21%的用户

    class Solution {
        public int lengthOfLIS(int[] nums) {
            //动态规划解法
            //1. dp[i]表示nums[0:i]中以nums[i]结尾的最长递增子序列长度  
            //2. dp[i]需要将nums[i]与之前的所有nums[j] (j<i)比较  
            //3. 若nums[j]<nums[i],则dp[i] = Math.max(dp[i], dp[j]+1)
            //4. 每个位置处以该元素为最小子序列的长度为1
            if(nums==null || nums.length==0) {
                return 0;
            }
    
            int[] dp = new int[nums.length];
            Arrays.fill(dp, 1);
            int ans = dp[0];
            for(int i=1; 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);
                    }
                }
                ans = Math.max(ans, dp[i]);
            }
            return ans;
        }
    }
    
  • 相关阅读:
    python05-循环
    python03-列表
    python03 input
    python02-灭霸的选择
    python学习小记01--萌新的进化
    Linux—-软件安装
    linux-认识与分析日志
    Esxi遇到问题汇总。
    xx
    Pramp mock interview (4th practice): Matrix Spiral Print
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13690810.html
Copyright © 2011-2022 走看看