283 leetcode 将给定数组的所有0移动到数组末尾,而维持其他所有非零元素的相对位置不变
```python
#题目描述1:将给定数组的所有0移动到数组末尾,而维持其他所有非零元素的相对位置不变
def move0(nums):
len_alist=len(nums)
new_index = 0
for i in range(len(nums)):
if nums[i]!=0:###做到这遇到的困难:知道把非零元素往前移动,但是不会,故借助新的指针,newindex
nums[new_index] = nums[i]
new_index += 1
#while len(alist)< len_alist:
# alist.append(0) 其他的元素没有变化,所以不能采用这个方法直接append[1,2,0,3,0,5]-》[1, 2, 3, 5, 0, 5]
while new_index < len_alist:
nums[new_index]=0
new_index+=1
return nums
def move0_2(nums):#用两个指针,同时从前边开始遍历,遇到非零元素卡住
new_index=0
#两个指针同时向前走,慢指针遇到第一个等于零的卡住,
#快指针继续走,遇到为非零的快指针停下和零的交换下位置,两个指针都继续往前走
#快指针就是为了遍历所有的,不用管遇到的是不是零,遇到非零的和满指针交换
for i in range(len(nums)):
if nums[new_index]==0:
if nums[i]!=0:
nums[i],nums[new_index]=nums[new_index],nums[i]
new_index+=1
else:
new_index+=1
return nums
if __name__ == '__main__':
list=move0_2([1,2,0,3,0,5])
print(list)