public class Solution {
// state: f[i] - length of LIS for nums[0...i]
// function: f[i] = (Max(f[j] + 1), if nums[j] < nums[i]), for all 0 < j < i
// initialze: f[0] = 1
// result: Max(f[0...nums.length-1]) //Attn!
public int lengthOfLIS(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int[] f = new int[nums.length];
int maxLength = 1;
for (int i = 0; i < nums.length; i++) {
f[i] = 1;
for (int j = 0; j < i; j++) {
if (nums[j] < nums[i]) {
f[i] = Math.max(f[i], f[j] + 1);
maxLength = Math.max(maxLength, f[i]);
}
}
}
return maxLength;
}
}
2016年8月4日星期四
[LeetCode] #300 Longest Increasing Subsequence
订阅:
博文评论 (Atom)
没有评论:
发表评论