第一种思路,时间复杂度O(n^2):
1 class Solution: 2 def findLongestChain(self, pairs: 'List[List[int]]') -> int: 3 n = len(pairs) 4 pairs = sorted(pairs,key=lambda x:[x[0],x[1]]) 5 dp = [1] * n 6 longest = 0 7 for i in range(1,n): 8 for j in range(i): 9 if pairs[i][0] > pairs[j][1]: 10 dp[i] = max(dp[i],dp[j]+1) 11 longest = max(longest,dp[i]) 12 return longest
第二种思路,时间复杂度O(n):
1 class Solution: 2 def findLongestChain(self, pairs: 'List[List[int]]') -> int: 3 n = len(pairs) 4 pairs = sorted(pairs,key=lambda x:[x[0],x[1]]) 5 longest = 1 6 curend = pairs[0][1] 7 for i in range(1,n): 8 if pairs[i][0] > curend: 9 longest += 1 10 curend = pairs[i][1] 11 else: 12 curend = min(curend,pairs[i][1]) 13 return longest