import java.util.*; public class Main{ public static void main(String[] args) { int[] nums={1,-1,2,-3,4,-5,6,-7}; int len=nums.length; int[] maxNum=new int[len+1]; maxNum[1]=nums[0]; maxNum[0]=Integer.MIN_VALUE; int maxLength=1; for(int i=1;i<len;i++){ int temp=1; int start=0; int end=maxLength; if(nums[i]>maxNum[end]){ maxLength=end+1; maxNum[maxLength]=nums[i]; continue; } while(start<=end){ int mid=start+(end-start)/2; if(maxNum[mid]>nums[i]){ end=mid-1; }else if(maxNum[mid]<nums[i]){ start=mid+1; }else{ break; } } if(start<=end){ continue; }else if(nums[i]>maxNum[end] && nums[i]<maxNum[start]) { temp=end+1; maxNum[temp]=nums[i]; } } System.out.println(maxLength); } }
编程之美 2.16
猜你喜欢
转载自www.cnblogs.com/xinyi-blog/p/8906336.html
今日推荐
周排行