输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000)。
紧接着第二行包含n个正整数m(1≤n≤10000),代表队伍中每位队员的身高。
对应每一组数据,输出最长递增子序列的长度。
7 1 7 3 5 9 4 8 6 1 3 5 2 4 6
4 4
try: while True: num,digitsList = int(input()),list(map(int,input().split())) subSeries = [] maxLen = 0 subSeries.append(digitsList[0]) #辅助数组 for i in range(1,num): if digitsList[i] > subSeries[maxLen]: maxLen += 1 subSeries.append(digitsList[i]) else: left,right = 0,maxLen while left <= right: #在已有的subSeries数组范围内二分查找到比该数大的最小数替换掉 mid = (left+right)//2 if digitsList[i] > subSeries[mid]: left = mid+1 else: right = mid-1 subSeries[left] = digitsList[i] # print(" ".join(map("{:>2}".format, subSeries))) #每次打印出来观察 print(maxLen+1) except Exception: pass