646. Maximum Length of Pair Chain

Question

CleanShot 2024-10-19 at 16.26.51@2x.png

Code

class Solution:
    def findLongestChain(self, pairs: List[List[int]]) -> int:
        
        '''
            dp solution
        '''

        # # Since it does not need to follow the original order
        # pairs.sort()

        # n = len(pairs)

        # dp = [1] * n

        # ans = 1

        # for i in range(n - 1, -1, -1):
        #     for j in range(i + 1, n):
        #         if pairs[j][0] > pairs[i][1]:
        #             dp[i] = max(dp[i], dp[j] + 1)


        # return max(dp) 

        '''
            greedy solution
        '''

        # By greedly taking the pair with later end value

        pairs.sort(key = lambda x:x[1])

        ans = 1

        prev_end = pairs[0][1]

        for left, right in pairs:
            if left > prev_end:
                ans += 1
                prev_end = right


        return ans