📌  相关文章
📜  从二进制数组中 0 的相邻左侧删除所有 1(1)

📅  最后修改于: 2023-12-03 15:21:55.567000             🧑  作者: Mango

从二进制数组中找出相邻左侧所有的0并删除其左侧的1

在二进制数组中,我们需要在找到相邻左侧的0时删除其左侧所有的1。这个过程通过以下代码片段可以实现:

def remove_left_ones(binary_arr):
    n = len(binary_arr)
    i = 0
    while i < n:
        if binary_arr[i] == 0:
            i += 1
            continue
        j = i - 1
        while j >= 0 and binary_arr[j] == 1:
            binary_arr[j] = 0
            j -= 1
        i += 1
    return binary_arr

以上代码中,我们从左向右遍历了二进制数组,一旦我们找到了一个0,我们就开始向左扫描,将其左侧所有的1都删除掉,直到遇到了另外一个0。

这个程序的时间复杂度为 O(n),其中 n 是二进制数组的长度。因为我们只需要遍历一次数组,所以这个程序的空间复杂度是 O(1)。

希望这个代码片段对您有所帮助。