classSolution{public:voidbinarySearch(vector<int>& d,constint num){int l =0;int r = d.size()-1;int m;while(l < r){
m = l + r >>1;if(d[m]>= num) r = m;else l = m +1;}
d[l]= num;}intlengthOfLIS(vector<int>& nums){int n = nums.size();
vector<int> d;
d.push_back(nums[0]);for(int i =1; i < n; i++){if(nums[i]> d.back()){
d.push_back(nums[i]);}elsebinarySearch(d, nums[i]);}return d.size();}};