LC300 - Longest Increasing Subsequence
Problem
Example
Solution
DFS
Cached DFS
def lengthOfLIS(self, nums: List[int]) -> int:
@cache
def LIS(i):
# if i is len(nums)-1, return 1
if i == len(nums) - 1:
return 1
# else, return max of 1, 1+LIS(i+1), ..., 1+LIS(n)
else:
tmpArr = [1]
for j in range(i+1, len(nums)):
if nums[j] > nums[i]:
tmp = 1 + LIS(j)
tmpArr.append(tmp)
return max(tmpArr)
for i in range(len(nums)):
tmpArr.append(LIS(i))
return max(tmpArr)PreviousLC1143 - Longest Common SubsequenceNextLC309 - Best Time to Buy and Sell Stock with Cooldown
Last updated