精華區beta Marginalman 關於我們 聯絡資訊
https://leetcode.com/problems/maximum-length-of-pair-chain/description/ 646. Maximum Length of Pair Chain 給你一個二維陣列 pairs ,pairs[i] = [left, right] 且 left < right。 一個 chain p1,p2 如果成立,表示滿足 p1 = [a, b] p2 = [c, d] 且 b < c。 求出 chain 的最長長度。 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]. 思路: 1.因為 pair[i] = [left, right] 之中 right 一定大於 left,而如果 right 越小就表示我們可以串起更長的 chain。 2.所以我們可以對 right 做貪婪,依照每個 pair 的 right 去排序,每次 都取滿足 p1 = [a, b] p2 = [c, d] 且 b < c 的 pair 加入 chain,這樣 串起來的 chain 必定是最長(因為 right 很大的 pair 都被排在最後面)。 Java Code: ----------------------------------------- class Solution { public int findLongestChain(int[][] pairs) { Arrays.sort(pairs, Comparator.comparingInt(a -> a[1])); int len = 1; int curr = pairs[0][1]; for (int i = 1; i < pairs.length; i++) { if (pairs[i][0] > curr) { curr = pairs[i][1]; len++; } } return len; } } ----------------------------------------- -- https://i.imgur.com/DANRJFR.jpg -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.73.13 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1693056253.A.36E.html
a9486l: 大師 08/26 21:26