📅  最后修改于: 2023-12-03 15:41:17.583000             🧑  作者: Mango
给定长度为 n 的二进制数组,其中只有两个位置上的数字为 1。找出这两个位置之间的最长距离。假设数组中只有 1 和 0 两种元素,且数组中的两个 1 经过了排列。
这是一道比较简单的题目,我们可以遍历一遍数组,记录下最后一个 1 出现的位置和最近一个 1 出现位置之间的距离。然后再取这些距离的最大值就是我们要的答案。
以下是 Python 代码实现:
def max_distance(arr: List[int]) -> int:
last_one = -1
max_distance = 0
for i in range(len(arr)):
if arr[i] == 1:
if last_one != -1:
max_distance = max(max_distance, i - last_one)
last_one = i
return max_distance
以上代码时间复杂度为 O(n),空间复杂度为 O(1)。
输入:
[0, 0, 1, 0, 1, 1, 0, 0, 1]
输出:
5
本题的解法比较简单,可以用一次遍历加上一些变量记录即可。在实际面试中,我们还可以根据具体情况考虑是否需要优化时间复杂度或空间复杂度。