type array [][]int func (a array) Len() int { return len(a) } func (a array) Less(i, j int) bool { return a[i][1] < a[j][1] } func (a array) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func findLongestChain(pairs [][]int) int { if len(pairs) == 0 { return 0 } sort.Sort(array(pairs)) pre, cnt := pairs[0][1], 1 for _, p := range pairs { if pre < p[0] { pre = p[1] cnt++ } } return cnt }