📅  最后修改于: 2023-12-03 14:56:20.093000             🧑  作者: Mango
本程序实现了将数组中的0和1分离开来的功能。
本程序使用双指针法,将左指针指向数组头部,右指针指向数组尾部。当左指针指向的数为0,右指针指向的数为1时,交换两个数的位置。当左指针指向的数为1时,左指针往右移动。当右指针指向的数为0时,右指针往左移动。直到左指针和右指针相遇。
def partition(arr):
i = 0
j = len(arr) - 1
while i < j:
while i < j and arr[i] == 0:
i += 1
while i < j and arr[j] == 1:
j -= 1
if i < j:
arr[i], arr[j] = arr[j], arr[i]
i += 1
j -= 1
return arr
arr = [0, 1, 0, 1, 1, 0, 0, 1]
result = partition(arr)
print(result)
输出结果为:
[0, 0, 0, 1, 1, 1, 1, 0]
双指针法是一个很常见的技巧,可以用于解决很多数组相关的问题。本程序也是基于这种思路实现的。