题解 | #递减种子序列#

递减种子序列

https://www.nowcoder.com/practice/708a3a8603274fc7b5732c5e73617203

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param seeds int整型一维数组
     * @return int整型
     */
    public int lengthOfLIS (int[] seeds) {
        // write code here
        int[] arr = new int[seeds.length];
        for (int i = 0; i < seeds.length; i++) {
            arr[i] = 1;
        }
        int result = 1;
        for (int i = 1; i < seeds.length; i++) {
            for (int j = i - 1; j >= 0; j--) {
                if (seeds[i] < seeds[j]) {
                    arr[i] = Math.max(arr[i], arr[j] + 1);
                }
            }
            result = Math.max(result, arr[i]);
        }
        return result;

    }
}

本题考察的知识点主要是动态规范,所用编程语言为java.动态规范的核心在于状态转移方程的建立。

我觉得最差情况就是非递减序列,此情况结果为1,此为数组边界条件,状态转移方程可以从如下代码可以看出

for (int i = 1; i < seeds.length; i++) {

for (int j = i - 1; j >= 0; j--) {

if (seeds[i] < seeds[j]) {

arr[i] = Math.max(arr[i], arr[j] + 1);

}

}

}

最后答案为arr数组中的最大值,arr数组中每个值都是原序列在该位置的最长递减子序列长度。

全部评论

相关推荐

#96年28岁其实挺小的#还没到28岁,不过也快了。没想到时间过得这么快,遥想大学毕业时我才23岁,读了个研,26了大学时我是一个风风火火的人,有想法&nbsp;有干劲&nbsp;有活力的人,觉得未来充满无限可能。我参加了很多的活动,也亲自作为负责人举办了全校规模的比赛,我体验了非常多不一样的事情,曾一度在一个星期内走遍了学校所有的男生宿舍去推销宣传产品,去校外拉赞助,谈''合作''&nbsp;锻炼了自己的口才,增长了自己的见识。现在想想,这些事好多都挺幼稚。但那个时候是我火一般的岁月,每天都充满激情。大学时不爱上课,所以文化课学的不怎么样,当时对这件事有遗憾,我没有高中时静心学习的能力了。后来,我想静...
大祥老师永远的0:徐霞客那一章作为七本书的尾声确实点睛之笔。 打开书时,个人的命运令我扼腕,王侯将相的事迹令我心潮澎湃,王朝的兴衰令我哀叹。 合上书后,最受用的还是最后一句话,幡然醒悟过来这些早已是过往云烟,你对它们扼腕、澎湃、哀叹其实轻于鸿毛,正如作者所言“先变成粪,后变成土”,用喜欢的方式度过自己的一生未必就不比书中的一个个名留青史的历史人物活得风采。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务