You are given an array of
A pair
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
Solution
這題和 300. Longest Increasing Subsequence 不同在於
pair 在原本 list 裡面的順序沒有關係,最後的答案只是要找最長的 chain
所以這邊的想法是,先對結束時間做排序,然後歷遍檢查有沒有重疊
kotlin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
fun findLongestChain(pairs: Array<IntArray>): Int { | |
pairs.sortBy { it[1] } | |
var end = Int.MIN_VALUE | |
var ans = 0 | |
for(p in pairs) { | |
if (p[0] > end) { | |
++ans | |
end = p[1] | |
} | |
} | |
return ans | |
} | |
} |
沒有留言:
張貼留言