#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @time: 2019/3/16
# @author: xfli
# the file...
"""問題分析:
可以用貪心演算法來解決,首先以陣列中的每個元素的第二值為關鍵字進行排序,
然後掃瞄一遍陣列,看看能否首尾銜接的住?如果不能就捨棄,依次累計,即可。
"""def findlongestchain(pairs):
pairs.sort(key=lambda x: x[1])
temp = [float('inf'), float('-inf')] # 臨時變數[ 正無窮打,負無窮大 ]
count = 0
for p in pairs: # 貪心的,進行求解
if temp[1] < p[0]:
count += 1
temp = p
return count
if __name__ == '__main__':
pairs = [[1,2], [2,3], [3,4]]
result = findlongestchain(pairs)
print(result)
Leetcode 646 最長數對鏈
給出 n 個數對。在每乙個數對中,第乙個數字總是比第二個數字小。現在,我們定義一種跟隨關係,當且僅當 b c 時,數對 c,d 才可以跟在 a,b 後面。我們用這種形式來構造乙個數對鏈。給定乙個對數集合,找出能夠形成的最長數對鏈的長度。你不需要用到所有的數對,你可以以任何順序選擇其中的一些數對來構造...
LeetCode 646 最長數對鏈
給出 n 個數對。在每乙個數對中,第乙個數字總是比第二個數字小。現在,我們定義一種跟隨關係,當且僅當 b c 時,數對 c,d 才可以跟在 a,b 後面。我們用這種形式來構造乙個數對鏈。給定乙個對數集合,找出能夠形成的最長數對鏈的長度。你不需要用到所有的數對,你可以以任何順序選擇其中的一些數對來構造...
leetcode 646 最長數對鏈
給出 n 個數對。在每乙個數對中,第乙個數字總是比第二個數字小。現在,我們定義一種跟隨關係,當且僅當 b c 時,數對 c,d 才可以跟在 a,b 後面。我們用這種形式來構造乙個數對鏈。給定乙個對數集合,找出能夠形成的最長數對鏈的長度。你不需要用到所有的數對,你可以以任何順序選擇其中的一些數對來構造...