移动零
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
提示:
1 <= nums.length <= 10e4
-2e31 <= nums[i] <= 2e31 - 1
**进阶:**你能尽量减少完成的操作次数吗?
双指针的题目,用i,j 分别指向当前需要填入元素的位置 与遍历到的下一个非零元素的位置,遍历一遍后,将按照相对位置填入所有非零元素,剩余的位置补0即可
python
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
i,j = 0,0
length = len(nums)
# i 为指向位置的idx
while j<length:
if nums[j]!=0:
nums[i] = nums[j]
j+=1
i+=1
else:j+=1
while i<length:
nums[i] = 0
i+=1
print (nums)