其他分享
首页 > 其他分享> > 283. 移动零——附带详细代码和思路

283. 移动零——附带详细代码和思路

作者:互联网

文章目录

1 题目

在这里插入图片描述

2 思路

⚠️注意点:如果删除元素后,会使得删除元素后的迭代器失效,删除元素后,会返回删除后的那个迭代器。

3 代码

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int len = nums.size();
        int index = 0;
        for(vector<int>::iterator iter = nums.begin();iter != nums.end() && index < len;index++){
            if(*iter == 0){
                iter = nums.erase(iter);
                nums.push_back(0);
            }else{
                iter++;
            }
        }
    }
};
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int slowIndex = 0;
        for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {
            if (nums[fastIndex] != 0) {
                nums[slowIndex++] = nums[fastIndex];
            }
        }
        // 将slowIndex之后的冗余元素赋值为0
        for (int i = slowIndex; i < nums.size(); i++) {
            nums[i] = 0;
        }
    }
};

标签:nums,附带,代码,元素,++,iter,fastIndex,int,283
来源: https://blog.csdn.net/qq_33375598/article/details/123575864