📌  相关文章
📜  将数组中的0和1分开(1)

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

将数组中的0和1分开

有一个仅包含0和1的数组,将0全部移动到数组的开头,把1全部移动到数组的末尾。

解法思路

一种简单的方法是使用双指针。定义两个指针 i 和 j,分别指向数组的开头和结尾。

在循环中,如果 i 所指向的元素是0,那么将其与 j 所指向的元素交换位置,i 加1,j 减1。

如果 i 和 j 相遇,循环结束。

具体的实现细节请看代码片段。

代码实现
def separate_zeros_ones(arr):
    i, j = 0, len(arr)-1
    while i < j:
        while arr[i] == 0 and i < j:
            i += 1
        while arr[j] == 1 and i < j:
            j -= 1
        if i < j:
            arr[i], arr[j] = arr[j], arr[i]
            i += 1
            j -= 1
    return arr
使用示例
arr = [0, 1, 0, 1, 0, 0, 1, 1]
separate_zeros_ones(arr)
# 返回 [0, 0, 0, 1, 1, 1, 1, 0]

以上即为将数组中的0和1分开的解法。