思想:参考https://www.geeksforgeeks.org/longest-monotonically-increasing-subsequence-size-n-log-n/
func CeilIndex(nums[]int,l,r,key int)int {
for r-l>1 {
m :=l+(r-l)/2
if nums[m]>=key{
r = m
}else {
l = m
}
}
return r
}
func lengthOfLIS(nums []int) int {
if len(nums)==0{
return 0
}
var tail []int
tail = append(tail,nums[0])
for i:=1;i<len(nums);i++{
if nums[i]<tail[0]{
tail[0] = nums[i]
}else if nums[i]>tail[len(tail)-1]{
tail = append(tail,nums[i])
}else {
tail[CeilIndex(tail,-1,len(tail)-1,nums[i])] = nums[i]
}
}
return len(tail)
}