Java 题解 | #递减种子序列#

递减种子序列

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 n = seeds.length;
        int[] f = new int[n];

        for (int i = 0; i < n; i++) {
            f[i] = 1;
            for (int j = 0; j < i; j++) {
                if (seeds[i] < seeds[j])
                    f[i] = Math.max(f[i], f[j] + 1);
            }
        }

        int res = 0;
        for (int i = 0; i < n; i++)
            res = Math.max(res, f[i]);
        return res;
    }
}

编程语言是Java。

该题考察的知识点是动态规划。

这段代码实现了一个函数 lengthOfLIS,它接受一个整型一维数组 seeds 作为输入,并返回一个整数。

使用动态规划来解决最长递增子序列(Longest Increasing Subsequence)问题。首先定义一个长度为 n 的辅助数组 f,其中 f[i] 表示以 seeds[i] 结尾的最长递增子序列的长度。

通过两层循环遍历数组 seeds。对于每个元素 seeds[i],将 f[i] 初始化为1,并且在之前的所有元素 seeds[j](其中 j 小于 i)中寻找比当前元素小的元素,如果找到则更新 f[i] 的值为 f[j] + 1。这样,在遍历完整个数组之后,数组 f 中的最大值即为最长递增子序列的长度。

返回 f 数组中的最大值作为结果。

全部评论

相关推荐

10-17 16:07
门头沟学院 Java
牛牛大你18号:在汇报,突然弹出来,,领导以为我在准备跳槽,刚从领导办公室谈心出来
点赞 评论 收藏
分享
object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务