646. Maximum Length of Pair Chain

来源:互联网 发布:spss数据信度分析 编辑:程序博客网 时间:2024/06/05 09:16
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: 2Explanation: The longest chain is [1,2] -> [3,4]Note:The number of given pairs will be in the range [1, 1000].
  • 这道题目不用dp,采用排序即可完成。
class Solution {    public:        int findLongestChain(vector<vector<int>>& pairs) {            sort(pairs.begin(), pairs.end(), cmp);            int cnt = 0;            vector<int>& pair = pairs[0];            for (int i = 0; i < pairs.size(); i++) {                if (i == 0 || pairs[i][0] > pair[1]) {                    pair = pairs[i];                    cnt++;                }            }            return cnt;        }    private:        static bool cmp(vector<int>& a, vector<int>&b) {            return a[1] < b[1] || a[1] == b[1] && a[0] < b[0];        }/*按照a[0]的大小来排序*/};