首页 > 市场动态 > 正文


【资料图】

以下为知识点:1、index倒序切片:temp=range(10)temp[:ind:-1]2、输出121队形的计算方法和实现步骤3、bisect模块的使用。(二分法)
1 #计算方法为,计算出以每个元素为最高点的最长121队列,再比较队列长度 2 #实现步骤: 3 #分别计算从左往右和从右往左的递增数列,并将两者相加,减去重复计算的中间数,则为最长数列长度 4 #抓住了中间数的index,通过计算方法求出最长队列的每个队员身高。 5  6 import bisect 7 def mid_incre(l): 8     arr=[l[0]] 9     dp=[1 for i in range(a)]10     for i in range(1,a):11         if l[i]>arr[-1]:12             arr.append(l[i])13             dp[i]=len(arr)14         else:15             pos=bisect.bisect_left(arr,l[i])#获取插入序列左侧index16             dp[i]=pos+1 17             arr[pos]=l[i]#这个置换不能少。18     return dp19 #a = 820 #l = [186, 186, 140, 200, 150, 400, 197, 190]21 a=int(input().strip())22 l = list(map(int,input().strip().split()))23 #记录递增序列长度24 left_incre=mid_incre(l)25 right_incre=mid_incre(l[::-1])[::-1]26 n_arr=[left_incre[i]+right_incre[i]-1 for i in range(len(left_incre))]27 print(a-max(n_arr))28 #打印其中一列身高队列29 for i in n_arr:30     if i==max(n_arr):31         ind=n_arr.index(i)32         break33 pq=[]34 for i in range(ind):35     if l[i]l[i]:38         pos=bisect.bisect_left(pq,l[i])39         pq[pos]=l[i]40     elif pq[-1]l[i]:49         pos=bisect.bisect_left(pq1,l[i])50         #print(pos)51         pq1[pos]=l[i]52     elif pq1[-1]  
		
上一篇 下一篇
x
相关阅读