J
题意: 给的一串数组内,有和K相同的值则所有数减一,形成的列表若还有等于K的数,再全减一,直到没有为止,输出。(最小减到 0)
思路: 统计从K开始的连续加一的数,每种有几个,比如例1有5个,例2只有1个。
a,k = map(int,input().split())
lst = list(map(int,input().split()))
n = 0
l = []
for item in lst:
l.append(item)
# print(l)
l = list(set(l))#除重复
l.sort()
# print(l)
c = 0
while c < len(l):
if l[c] == k:
n += 1#减的数值
k = k + 1
c += 1
for i in range(0, len(lst)):
if lst[i] <= n:
lst[i] = 0
else:
lst[i] = lst[i] - n
print(*lst)
这个是过的代码,下面那个 思路是欧克的,但是超时了,主要我想不通为什么超时。。。
n,k=map(int,input().split())
an=list(map(int,input().split()))
if k not in an:
print(*an)
else:
re=1
for i in range(n):
k+=1
if k in an:
re+=1
else:
break
res=[]
for j in an:
c=j-re
if c<0:
res.append(0)
else:
res.append(c)
print(*res)
可能是循环 太久了趴