题解 | #递减种子序列#
递减种子序列
https://www.nowcoder.com/practice/708a3a8603274fc7b5732c5e73617203
知识点
动态规划
解题思路
dp数组i表示以i为结尾的最长子序列,
遍历数组seeds,要找到前面第一个大于seeds[i]的seeds的下标j,dp[i]就是前面的一个大于seed[i]的下标j的dp[j] + 1了,如果没有找到j,说明前面没有大于seeds[i]的,则dp[i]等于1。记录其中最大的de[i]返回。
Java题解
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param seeds int整型一维数组
* @return int整型
*/
public int lengthOfLIS (int[] seeds) {
// write code here
int n = seeds.length;
int[] dp = new int[n];
int ans = 1;
dp[0] = 1;
for (int i = 0; i < n; i++){
int j = i - 1;
for(; j >= 0; j--){
if(seeds[i] < seeds[j]){
dp[i] = dp[j] + 1;
ans = Math.max(ans,dp[i]);
break;
}
} if(j == -1){
dp[i] = 1;
ans = Math.max(ans,dp[i]);
}
}
return ans;
}
}

查看4道真题和解析

