可以看成一个感染过程,如果目标值为 k 的话,那么第一秒就是 nums 中所有值为 k 的地方向左右两边扩散一位通过一个字典我们可以把 nums 中出现的每一个的值的下标以 list 的形式存储处理每一个值的下标,对于值 k 来说,如果以 k 为目标,那么需要的最少秒数就是 nums 中所有 k 的最大间隔除以二答案就是最小的第三步的处理结果 class Solution:def minimumSeconds(self, nums: List[int]) -> int:d = defaultdict(list)n = len(nums)for i in range(n):d[nums[i]].append(i)ans = inffor key in d.keys():ma = 0if len(d[key]) == 1:ma = n - 1d[key].append(d[key][0])for i in range(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)