LeetCode 283.移动零

LeetCode 283.移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

输入:nums = [0,1,0,3,12]

输出:[1,3,12,0,0]

my_code:

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int ptr1=0,ptr2=0;
        while(ptr1<nums.size()){
            if(nums[ptr1]!=0){
                swap(nums[ptr1],nums[ptr2]);
                ptr2++;
            }
            ptr1++;
        }
    }
};

思路:

利用双指针。初始时将两个指针置于数组头部。让ptr1右移,遇到非零的数,交换ptr1和ptr2的数,同时将ptr2右移一位。

ptr2始终指向第一个0所在的位置。

你可能感兴趣的:(笔记,leetcode,算法,数据结构)