考察的知识点:动态规划;

解答方法分析:

  1. 建一个动态规划数组dp,dp[i]表示以第i个种子结尾的最长连续生长速度递减的种子序列的长度。
  2. 初始化dp数组的所有元素为1,因为每个种子都可以单独构成一个长度为1的递减序列。
  3. 从第二个种子开始遍历,对于每个种子i,计算dp[i]的值:如果seeds[i]的生长速度小于seeds[i-1]的生长速度,则dp[i]值为dp[i-1]+1。否则,dp[i]的值为1。
  4. 遍历dp数组,找到其中的最大值,即为最长的连续生长速度递减的种子序列的长度。
  5. 返回最长长度

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param seeds int整型vector
     * @return int整型
     */
    int lengthOfLIS(vector<int>& seeds) {
        int n = seeds.size();
        vector<int> dp(n, 1);
        int maxLength = 1;
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < i; j++) {
                if (seeds[i] < seeds[j] && dp[j] + 1 > dp[i]) {
                    dp[i] = dp[j] + 1;
                    maxLength = max(maxLength, dp[i]);
                }
            }
        }
        return maxLength;
    }
};