Go Here
这道题和longest increasing sub-sequence 几乎一样,仅仅需要一开始做一次排序,以及一个特殊顺序处理,comments里会提到。
上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
import bisect class : def maxEnvelopes(self, envelopes): """ :type envelopes: List[List[int]] :rtype: int """ if not envelopes: return 0 l = len(envelopes) if l == 1: return 1 envelopes.sort(key=lambda c:(c[0], -c[1])) return self.lis(list(map(lambda c: c[1], envelopes))) def lis(self, arr): q = [] for i in arr: pos = bisect.bisect_left(q, i) if len(q) == pos: q.append(i) else: q[pos] = i return len(q)
|
近期评论