1 """
2 Given an unsorted array of integers, find the length of longest increasing subsequence.
3 Example
4 Input: [10,9,2,5,3,7,101,18]
5 Output: 4
6 Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.
7 """
8 """
9 类似于139,322
10 自己找到了动态规划方程
11 f(i) = 1 + max(f(j) if nums[i] > nums[j]) (j < i)
12 特别注意的是将数组初始化为1
13 """
14 class Solution:
15 def lengthOfLIS(self, nums):
16 if not nums: #bug nums == None 无法通过 nums = []的情况
17 return 0
18 dp = [1] * (len(nums)+1)
19 for i in range(1, len(nums)):
20 for j in range(i):
21 if nums[j] < nums[i]:
22 dp[i] = max(dp[i], dp[j] + 1)
23 return max(dp)
24
25 # nums1 = None
26 # nums2 = []
27 # if nums1 == None:
28 # print('1')
29 # if not nums1:
30 # print('2')
31 # if nums2 == None: #针对这种情况无法判断nums=[]
32 # print('3')
33 # if not nums2:
34 # print('4')
35 # #Answer 为 1 2 4