Skip to content

Commit a17de72

Browse files
committed
300.最长递增子序列
1 parent 5fac31e commit a17de72

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

leetcode_Java/Solution0300.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
1-
// 300. 最长上升子序列
1+
// 300. 最长递增子序列
22

33

4+
/*
5+
1、定义dp数组:dp[i] 表示以索引i的元素结尾的最长递增子序列的长度
6+
2、状态转移方程:if (nums[i] > nums[j]) dp[i] = Math.max(dp[i], dp[j] + 1);
7+
位置i的最长递增子序列长度 等于j从0到i-1各个位置的 最长递增子序列加1的 最大值
8+
3、初始化:dp[i] = 1 表示每一个位置i的递增子序列的长度至少是1
9+
4、遍历dp数组填表:第一个for循环遍历dp数组的未知位置,第二个for循环遍历dp数组的已知位置,根据状态转移方程获取已知结果计算未知结果
10+
5、返回结果:遍历时比较每个位置结尾时的最长递增子序列的长度,并记录最大值,最后返回最大值
11+
*/
412
public class Solution {
513
public int lengthOfLIS(int[] nums) {
614
int n = nums.length;
7-
if (n < 2)
15+
if (n < 2) {
816
return n;
9-
17+
}
1018
int[] dp = new int[n];
1119
Arrays.fill(dp, 1);
1220
int res = 1;
13-
1421
for (int i = 1; i < n; i++) {
1522
for (int j = 0; j < i; j++) {
1623
if (nums[i] > nums[j]) {

0 commit comments

Comments
 (0)