题目考察的知识点

考察动态规划

题目解答方法的文字分析

构建dp数组,dp[i]表示该位置上递减序列的最大长度,起始状态全为1,表示这个位置上的数他本身就构成了一个递减序列,长度为1。随后双重循环检查每一个序列。dp[i] = Math.max(dp[i], dp[j] + 1)为状态转移方程,并且只有当构成递减条件的时候才触发,即后一个位置数小于前一个位置的时候。

本题解析所用的编程语言

使用Java语言解答

完整且正确的编程代码

import java.util.*;


public class Solution {
    public int lengthOfLIS(int[] seeds) {
        int n = seeds.length;
        if (n == 0) return 0;
        int[] dp = new int[n];
        Arrays.fill(dp, 1);  //起始状态下数组全为1
        int maxLength = 1;
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < i; j++) {
                if (seeds[j] > seeds[i]) {
                    dp[i] = Math.max(dp[i], dp[j] + 1);
                }
            }
            maxLength = Math.max(maxLength, dp[i]);
        }
        return maxLength;
    }
}