Longest Increasing Subsequence(FB 区间DP)
class Solution {
public int lengthOfLIS(int[] nums) {
if(nums == null || nums.length == 0)
return 0;
int[] f = new int[nums.length];
int max = 0;
for(int i = 0; i < nums.length; i ++){
f[i] = 1;//最坏情况只有当前这个元素,所以1
for(int j = 0; j < i; j ++){//需要这层循环,因为对于每个nums[i]来说,前面情况都不一样,需要重新从头loop判断
if(nums[j] < nums[i]){
f[i] = f[i] > f[j] + 1 ? f[i] : f[j] + 1;//当前f[i]可能已经比当前f[j]+1更大
}
}
max = Math.max(f[i], max);
}
return max;
}
}Last updated