646.Maximum Length of Pair Chain === ###### tags: `Medium` `Array` `DP` `Greedy` `Sorting` [646. Maximum Length of Pair Chain](https://leetcode.com/problems/maximum-length-of-pair-chain/) ### 題目描述 You are given an array of `n` pairs `pairs` where `pairs[i] = [lefti, righti]` and `lefti < righti`. A pair `p2 = [c, d]` **follows** a pair `p1 = [a, b]` if `b < c`. A **chain** of pairs can be formed in this fashion. Return *the length longest chain which can be formed.* You do not need to use up all the given intervals. You can select pairs in any order. ### 範例 **Example 1:** ``` Input: pairs = [[1,2],[2,3],[3,4]] Output: 2 Explanation: The longest chain is [1,2] -> [3,4]. ``` **Example 2:** ``` Input: pairs = [[1,2],[7,8],[4,5]] Output: 3 Explanation: The longest chain is [1,2] -> [4,5] -> [7,8]. ``` **Constraints**: * `n` == `pairs.length` * 1 <= `n` <= 1000 * -1000 <= `lefti` < `righti` <= 1000 ### 解答 #### C# ```csharp= public class Solution { public int FindLongestChain(int[][] pairs) { // 依區間結尾大小排序 Array.Sort(pairs, (a, b) => a[1].CompareTo(b[1])); // Greedy 的找出不重疊的區間 int ans = 0; int maxEnd = int.MinValue; foreach (var pair in pairs) { if (pair[0] <= maxEnd) continue; ans++; maxEnd = pair[1]; } return ans; } } ``` >[name=Jim][time=Aug 28, 2023] ### Reference [回到題目列表](https://marsgoat.github.io/XNnote/coding/leetcodeEveryDay.html)