Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
给出一堆数字pair,pairs[i] = [lefti, righti] and lefti < righti,找出最长的一列pair,使得每一个pair的right小于下一个pair的left(pair的顺序可以打乱),DP
先将所有pair按right从小到大排序,然后O(n^2)的DP


 1 #646
 2 #Runtime: 1406 ms (Beats 41.4%)
 3 #Memory: 13.8 MB (Beats 67.91%)
 4 
 5 class Solution(object):
 6     def findLongestChain(self, pairs):
 7         """
 8         :type pairs: List[List[int]]
 9         :rtype: int
10         """
11         pairs.sort(key=lambda x: x[1])
12         dp = [1] * len(pairs)
13         for i in range(1, len(pairs)):
14             for j in range(i):
15                 if pairs[i][0] > pairs[j][1]:
16                     dp[i] = max(dp[i], dp[j] + 1)
17         return max(dp)

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理