1 条题解
-
-1
我本来想用冒泡或者插序排序的算法的,结果每次打进去都是90%通过第九次验证超时…… #3的验证从900ms优化到了300ms,但是#9的验证还是超时~~(焯,老子半夜优化了两个半小时)~~ 以下是一开始写的效率最低的代码:
num,loc=map(int,input().split()) n=input().split() for i in range(len(n)-1): #f=False for j in range(i,len(n)): if int(n[j])<int(n[i]): n[j],n[i]=n[i],n[j]#;f=True #if f:break #排序↑(低效率,懒得优化) m=[] for i in range(len(n)-1): if n[i]!=n[i+1]: m.append(n[i]) if m[-1]!=n[-1]:m.append(n[-1]) #去重↑ if loc-1<len(m):print(m[loc-1]) else:print('NO RESULT')
这是第一次优化的代码:(使用内置函数set)
num,loc=map(int,input().split()) n=input().split() n=list(set(n)) n=[int(i) for i in n] for i in range(len(n)-1): min1=i for j in range(i,len(n)): if n[j]<n[min1]:min1=j n[min1],n[i]=n[i],n[min1] #排序↑ #m=[] #for i in range(len(n)-1): # if n[i]!=n[i+1]:m.append(n[i]) #if m[-1]!=n[-1]:m.append(n[-1]) #m=list(set(n)) m=n #去重↑ if loc-1<len(m):print(m[loc-1]) else:print('NO RESULT') #3验证900ms
这是第三次优化:
num,loc=map(int,input().split()) n=input().split() n=list(set(n)) n=[int(i) for i in n] l=len(n) for i in range(l-1): min1=i;f=True for j in range(i,l): if n[j]<=n[min1]: min1=j;f=False if f:break else:n[min1],n[i]=n[i],n[min1] #排序↑ #m=[] #for i in range(len(n)-1): # if n[i]!=n[i+1]:m.append(n[i]) #if m[-1]!=n[-1]:m.append(n[-1]) #m=list(set(n)) #去重↑ #print(n) if loc<=l:print(n[loc-1]) else:print('NO RESULT') #3验证300ms
这是最后提交上去的代码(啊啊啊我在干什么😭):
num,loc=map(int,input().split()) n=input().split() n=list(set(n)) n=[int(i) for i in n] n=sorted(n) if loc<len(n)+1:print(n[loc-1]) else:print('NO RESULT')
这个故事告诉我们:写代码千万不要上头跟自己过不去(尤其是这种简单代码(或许是我根本不懂怎么优化这一大坨代码,欢迎大佬嘲笑😭))
- 1
信息
- ID
- 301
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 38
- 已通过
- 17
- 上传者