python列表零的移动
时间: 2023-07-07 19:06:47 浏览: 139
python 移动零,给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
5星 · 资源好评率100%
将列表中的所有非零元素前移,将所有零元素后移,可以使用双指针的方法,一个指针指向当前遍历到的非零元素的位置,另一个指针指向当前遍历到的位置。遍历时,若当前位置为非零元素,则将其与前面的非零元素交换位置,并将前面的非零元素指针后移;若当前位置为零元素,则继续向后遍历。遍历完后,所有非零元素都被移到了列表的前面,所有零元素都被移到了列表的后面。
下面是示例代码:
```python
def move_zeros(nums):
non_zero_index = 0 # 非零元素指针
for i in range(len(nums)):
if nums[i] != 0:
nums[non_zero_index], nums[i] = nums[i], nums[non_zero_index]
non_zero_index += 1
nums = [0, 1, 0, 3, 12]
move_zeros(nums)
print(nums) # 输出 [1, 3, 12, 0, 0]
```
该算法的时间复杂度为 O(n),空间复杂度为 O(1)。
阅读全文