You are given n
pairs of numbers. In every pair, the first number is always smaller than the second number.
Now, we define a pair (c, d)
can follow another pair (a, b)
if and only if b < c
. Chain of pairs can be formed in this fashion.
Given a set of pairs, find the length longest chain which can be formed. You needn't use up all the given pairs. You can select pairs in any order.
Example 1:
Input: [[1,2], [2,3], [3,4]] Output: 2 Explanation: The longest chain is [1,2] -> [3,4]
Note:
- The number of given pairs will be in the range [1, 1000].
class Solution:
def findLongestChain(self, pairs):
"""
:type pairs: List[List[int]]
:rtype: int
"""
res = 0
sortedPairs = sorted(pairs, key=lambda x: (x[0], x[1]))
pre = -2147483648
for pair in sortedPairs:
if pre < pair[0]:
res += 1
pre = pair[1]
elif pair[1] < pre:
pre = pair[1]
return res
#pairs = [[1, 2], [2, 3], [5, 2], [3, 4], [3, 10]]
pairs = [[-6, 9], [1, 6], [8, 10], [-1, 4], [-6, -2], [-9, 8], [-5, 3], [0, 3]]
s = Solution()
res = s.findLongestChain(pairs)
print(res)