leetcode646

第一种思路,时间复杂度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
原文地址:https://www.cnblogs.com/asenyang/p/11004062.html