leetcode300 最长上升子序列
【摘要】 经典题,不解释,可以看我之前文章。
普通dp
public class Solution { public int lengthOfLIS(int[] nums) { if (nums.length == 0) { return 0; } int[] dp = new int[nums.length]; dp[0] = 1; int maxans = 1; for (in...
经典题,不解释,可以看我之前文章。
普通dp
-
public class Solution {
-
public int lengthOfLIS(int[] nums) {
-
if (nums.length == 0) {
-
return 0;
-
}
-
int[] dp = new int[nums.length];
-
dp[0] = 1;
-
int maxans = 1;
-
for (int i = 1; i < dp.length; i++) {
-
int maxval = 0;
-
for (int j = 0; j < i; j++) {
-
if (nums[i] > nums[j]) {
-
maxval = Math.max(maxval, dp[j]);
-
}
-
}
-
dp[i] = maxval + 1;
-
maxans = Math.max(maxans, dp[i]);
-
}
-
return maxans;
-
}
-
}
二分dp
-
public class Solution {
-
public int lengthOfLIS(int[] nums) {
-
int[] dp = new int[nums.length];
-
int len = 0;
-
for (int num : nums) {
-
int i = Arrays.binarySearch(dp, 0, len, num);
-
if (i < 0) {
-
i = -(i + 1);
-
}
-
dp[i] = num;
-
if (i == len) {
-
len++;
-
}
-
}
-
return len;
-
}
-
}
文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。
原文链接:fantianzuo.blog.csdn.net/article/details/103246161
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)