300. Longest Increasing Subsequence
# Medium(非常经典,一定要会)
Solution 1: time complex =
class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
# edge case
if len(nums) <= 1:
return len(nums)
f = [1]*len(nums) # f[i] means LIS ending with nums[i]
for i in range(0, len(nums)):
for j in range(0, i):
if nums[j] < nums[i]:
f[i] = max(f[i], f[j]+1)
result = f[0]
for i in range(1, len(f)):
if f[i] > result:
result = f[i]
return resultclass Solution {
public int lengthOfLIS(int[] nums) {
int[] longest = new int[nums.length];
Arrays.fill(longest, 1);
for(int i = 1; i < nums.length; i ++) {
for(int j = 0; j < i; j ++) {
if(nums[j] < nums[i])
longest[i] = Math.max(longest[i], longest[j]+1);
}
}
Arrays.sort(longest);
return longest[nums.length - 1];
}
}Solution 2: time complex =
Last updated