zoukankan      html  css  js  c++  java
  • LC 646. Maximum Length of Pair Chain

    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:

    1. The number of given pairs will be in the range [1, 1000].

    Runtime: 48 ms, faster than 63.85% of C++ online submissions for Maximum Length of Pair Chain.

    排序然后two pointer。争取一次AC。

    class Solution {
    public:
      static bool cmp(const vector<int>& a, const vector<int>& b){
        return a[1] < b[1];
      }
      int findLongestChain(vector<vector<int>>& pairs) {
        sort(pairs.begin(),pairs.end(),cmp);
        int ret = 0, i = 0,j = 1;
        while(j < pairs.size()){
          if(pairs[i][1] < pairs[j][0]){
            ret++;
            i = j;
            j++;
          }else j++;
        }
        return ret+1;
      }
    };
  • 相关阅读:
    插入排序
    选择排序
    P1338 末日的传说 逆序数对
    P1582倒水 位运算
    P2158 [SDOI2008] (欧拉函数
    HDU 6274 二分+预处理(CCPC K题
    P1219 N皇后
    [USACO1.5] 回文质数
    Codeforces #123D: 后缀数组+单调栈
    单调栈 单调队列
  • 原文地址:https://www.cnblogs.com/ethanhong/p/10179172.html
Copyright © 2011-2022 走看看