我机试的时候直接暴力,每次-1都重新排序,想着5个数排序时间不高,结果只有40% 后来想了一下,开始排序一次,-1之后必然是一个有序数组,只要找到第一个大于首位的数字就行了,然后进行翻转前几个数字。下边代码没来得及提交 t = int(input()) def fun(l): cnt = 0 l.sort() while l[1] * l[2] != 0: cnt +=1 for i in range(1,5): l[i] -= 1 p = 1 while p < 5 and l[p] < l[0]: p += 1 if p == 5: continue left,right = 0,p-1 while left < right: l[left],l[right]=l[right],l[left] left += 1 right -= 1 return cnt while t: t -= 1 l = list(map(int,input().split())) res = fun(l) print(res)
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务