300. Longest Increasing Subsequence
O(nlgn)解法
class Solution {
public int lengthOfLIS(int[] nums) {
int size=0;
int tail[]=new int[nums.length];
for(int i=0;i<nums.length;i++){
int low=0,high=size,mid=0;
while(low<high){
mid=(low+high)/2;
if(tail[mid]<nums[i])
low=mid+1;
else
high=mid;
}
if(size==low)
size++;
tail[low]=nums[i];
}
return size;
}
}