Leetcode 移动零
本文最后更新于:2023年2月8日 晚上
地址:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/28/
一、题目
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
二、我的解决方案
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int q = 0; //用于记录当前遍历到的0的个数
for (int i = nums.size() - 1; i >= 0; i--) { //从后往前遍历避免对已经后移的0重复处理
if (nums[i] == 0) {
nums.insert(nums.end() - q, 0); //在数组尾第q个0之前插入一个0
nums.erase(nums.begin() + i); //删除nums[i]
q++;
}
}
}
};
使用了两个vector
的函数insert
(用于插入元素)和erase
(用于删除元素)。
Leetcode 移动零
https://mxy493.xyz/2019012610528/