当前位置: 代码迷 >> 综合 >> Leetcode 646. Maximum Length of Pair Chain (python+cpp)
  详细解决方案

Leetcode 646. Maximum Length of Pair Chain (python+cpp)

热度:51   发布时间:2023-11-26 07:24:22.0

Leetcode 646. Maximum Length of Pair Chain

  • 题目
  • 解法:动态规划

题目

在这里插入图片描述

解法:动态规划

这个题目跟Leetcode 300 longest increasing subsequency几乎是一模一样的。只是这边有个隐藏条件就是需要排个序,按照第一个元素从小到大排,这边采用LIS最经典的二维动态规划
python解法如下:

class Solution:def findLongestChain(self, pairs: List[List[int]]) -> int:if not pairs:return 0pairs.sort()dp = [1]*len(pairs)for i in range(1,len(pairs)):for j in range(i):if pairs[i][0]>pairs[j][1]:dp[i] = max(dp[i],dp[j]+1)return max(dp)

C++解法:
C++解法只需要注意一下对一个vector求最大值的方法即可

class Solution {
    
public:int findLongestChain(vector<vector<int>>& pairs) {
    sort(pairs.begin(),pairs.end());vector<int> dp(pairs.size(),1);for (int i=1;i<pairs.size();i++){
    for (int j=0;j<i;j++){
    if (pairs[i][0]>pairs[j][1]) dp[i] = max(dp[i],dp[j]+1);}}return *max_element(dp.begin(),dp.end());}
};
  相关解决方案