可以看成一个感染过程,如果目标值为 k 的话,那么第一秒就是 nums 中所有值为 k 的地方向左右两边扩散一位
通过一个字典我们可以把 nums 中出现的每一个的值的下标以 list 的形式存储
处理每一个值的下标,对于值 k 来说,如果以 k 为目标,那么需要的最少秒数就是 nums 中所有 k 的最大间隔除以二
答案就是最小的第三步的处理结果
classSolution:defminimumSeconds(self, nums: List[int])->int:
d = defaultdict(list)
n =len(nums)for i inrange(n):
d[nums[i]].append(i)
ans = inf
for key in d.keys():
ma =0iflen(d[key])==1:
ma = n -1
d[key].append(d[key][0])for i inrange(len(d[key])-1):
ma =max(ma,(d[key][i +1]+ n - d[key][i]-1)% n)
ans =min(ans, ma)return ceil(ans /2)
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。这个简单模型是早期Web成功的有功之臣,因为它…